1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache license, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the license for the specific language governing permissions and
15 * limitations under the license.
16 */
17 package org.apache.logging.log4j.core.net;
18
19 import org.apache.logging.log4j.util.EnglishEnums;
20
21 /**
22 * The facility codes used by the Syslog system.
23 *
24 * Numerical Facility<br>
25 * Code<br>
26 *
27 * 0 kernel messages<br>
28 * 1 user-level messages<br>
29 * 2 mail system<br>
30 * 3 system daemons<br>
31 * 4 security/authorization messages<br>
32 * 5 messages generated internally by syslogd<br>
33 * 6 line printer subsystem<br>
34 * 7 network news subsystem<br>
35 * 8 UUCP subsystem<br>
36 * 9 clock daemon<br>
37 * 10 security/authorization messages<br>
38 * 11 FTP daemon<br>
39 * 12 NTP subsystem<br>
40 * 13 log audit<br>
41 * 14 log alert<br>
42 * 15 clock daemon (note 2)<br>
43 * 16 local use 0 (local0)<br>
44 * 17 local use 1 (local1)<br>
45 * 18 local use 2 (local2)<br>
46 * 19 local use 3 (local3)<br>
47 * 20 local use 4 (local4)<br>
48 * 21 local use 5 (local5)<br>
49 * 22 local use 6 (local6)<br>
50 * 23 local use 7 (local7)<br>
51 */
52 public enum Facility {
53 /** Kernel messages. */
54 KERN(0),
55 /** User level messages. */
56 USER(1),
57 /** Mail system. */
58 MAIL(2),
59 /** System daemons. */
60 DAEMON(3),
61 /** Security/Authorization messages. */
62 AUTH(4),
63 /** Messages generated by syslogd. */
64 SYSLOG(5),
65 /** Line printer subsystem. */
66 LPR(6),
67 /** Network news subsystem. */
68 NEWS(7),
69 /** UUCP subsystem. */
70 UUCP(8),
71 /** Clock daemon. */
72 CRON(9),
73 /** Security/Authorization messages. */
74 AUTHPRIV(10),
75 /** FTP daemon. */
76 FTP(11),
77 /** NTP subsystem. */
78 NTP(12),
79 /** Log audit. */
80 LOG_AUDIT(13),
81 /** Log alert. */
82 LOG_ALERT(14),
83 /** Clock daemon. */
84 CLOCK(15),
85 /** Local use 0. */
86 LOCAL0(16),
87 /** Local use 1. */
88 LOCAL1(17),
89 /** Local use 2. */
90 LOCAL2(18),
91 /** Local use 3. */
92 LOCAL3(19),
93 /** Local use 4. */
94 LOCAL4(20),
95 /** Local use 5. */
96 LOCAL5(21),
97 /** Local use 6. */
98 LOCAL6(22),
99 /** 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 }