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 }