001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements. See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache license, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License. You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the license for the specific language governing permissions and
015     * limitations under the license.
016     */
017    package org.apache.logging.log4j.core.net;
018    
019    import org.apache.logging.log4j.util.EnglishEnums;
020    
021    /**
022     *  The facility codes used by the Syslog system.
023     *
024     *        Numerical          Facility<br>
025     *           Code<br>
026     *
027     *             0             kernel messages<br>
028     *             1             user-level messages<br>
029     *             2             mail system<br>
030     *             3             system daemons<br>
031     *             4             security/authorization messages<br>
032     *             5             messages generated internally by syslogd<br>
033     *             6             line printer subsystem<br>
034     *             7             network news subsystem<br>
035     *             8             UUCP subsystem<br>
036     *             9             clock daemon<br>
037     *            10             security/authorization messages<br>
038     *            11             FTP daemon<br>
039     *            12             NTP subsystem<br>
040     *            13             log audit<br>
041     *            14             log alert<br>
042     *            15             clock daemon (note 2)<br>
043     *            16             local use 0  (local0)<br>
044     *            17             local use 1  (local1)<br>
045     *            18             local use 2  (local2)<br>
046     *            19             local use 3  (local3)<br>
047     *            20             local use 4  (local4)<br>
048     *            21             local use 5  (local5)<br>
049     *            22             local use 6  (local6)<br>
050     *            23             local use 7  (local7)<br>
051     */
052    public enum Facility {
053        /** Kernel messages. */
054        KERN(0),
055        /** User level messages. */
056        USER(1),
057        /** Mail system. */
058        MAIL(2),
059        /** System daemons. */
060        DAEMON(3),
061        /** Security/Authorization messages. */
062        AUTH(4),
063        /** Messages generated by syslogd. */
064        SYSLOG(5),
065        /** Line printer subsystem. */
066        LPR(6),
067        /** Network news subsystem. */
068        NEWS(7),
069        /** UUCP subsystem. */
070        UUCP(8),
071        /** Clock daemon. */
072        CRON(9),
073        /** Security/Authorization messages. */
074        AUTHPRIV(10),
075        /** FTP daemon. */
076        FTP(11),
077        /** NTP subsystem. */
078        NTP(12),
079        /** Log audit. */
080        LOG_AUDIT(13),
081        /** Log alert. */
082        LOG_ALERT(14),
083        /** Clock daemon. */
084        CLOCK(15),
085        /** Local use 0. */
086        LOCAL0(16),
087        /** Local use 1. */
088        LOCAL1(17),
089        /** Local use 2. */
090        LOCAL2(18),
091        /** Local use 3. */
092        LOCAL3(19),
093        /** Local use 4. */
094        LOCAL4(20),
095        /** Local use 5. */
096        LOCAL5(21),
097        /** Local use 6. */
098        LOCAL6(22),
099        /** Local use 7. */
100        LOCAL7(23);
101    
102        private final int code;
103    
104        private Facility(final int code) {
105            this.code = code;
106        }
107    
108        /**
109         * Returns the Facility for the given string.
110         *
111         * @param name The Facility enum name, case-insensitive. If null, returns, null
112         * @return a Facility enum value or null if name is null
113         */
114        public static Facility toFacility(final String name) {
115            return toFacility(name, null);
116        }
117    
118        /**
119         * Returns the Facility for the given string.
120         *
121         * @param name The Facility enum name, case-insensitive. If null, returns, defaultFacility
122         * @param defaultFacility the Facility to return if name is null
123         * @return a Facility enum value or null if name is null
124         */
125        public static Facility toFacility(final String name, final Facility defaultFacility) {
126            return EnglishEnums.valueOf(Facility.class, name, defaultFacility);
127        }
128    
129        /**
130         * Retrieve the value of the enumeration.
131         * @return The value associated with the enumeration.
132         */
133        public int getCode() {
134            return this.code;
135        }
136    
137        /**
138         * Determine if this enumeration matches the specified name (ignoring case).
139         * @param name The name to check.
140         * @return true if the name matches this enumeration, ignoring case.
141         */
142        public boolean isEqual(final String name) {
143            return this.name().equalsIgnoreCase(name);
144        }
145    
146    }