View Javadoc
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   * <table>
25   *     <tr>
26   *         <th>Numerical Code</th>
27   *         <th>Facility</th>
28   *     </tr>
29   *     <tr>
30   *         <td>0</td>
31   *         <td>kernel messages</td>
32   *     </tr>
33   *     <tr>
34   *         <td>1</td>
35   *         <td>user-level messages</td>
36   *     </tr>
37   *     <tr>
38   *         <td>2</td>
39   *         <td>mail system</td>
40   *     </tr>
41   *     <tr>
42   *         <td>3</td>
43   *         <td>system daemons</td>
44   *     </tr>
45   *     <tr>
46   *         <td>4</td>
47   *         <td>security/authorization messages</td>
48   *     </tr>
49   *     <tr>
50   *         <td>5</td>
51   *         <td>messages generated internally by syslogd</td>
52   *     </tr>
53   *     <tr>
54   *         <td>6</td>
55   *         <td>line printer subsystem</td>
56   *     </tr>
57   *     <tr>
58   *         <td>7</td>
59   *         <td>network news subsystem</td>
60   *     </tr>
61   *     <tr>
62   *         <td>8</td>
63   *         <td>UUCP subsystem</td>
64   *     </tr>
65   *     <tr>
66   *         <td>9</td>
67   *         <td>clock daemon</td>
68   *     </tr>
69   *     <tr>
70   *         <td>10</td>
71   *         <td>security/authorization messages</td>
72   *     </tr>
73   *     <tr>
74   *         <td>11</td>
75   *         <td>FTP daemon</td>
76   *     </tr>
77   *     <tr>
78   *         <td>12</td>
79   *         <td>NTP subsystem</td>
80   *     </tr>
81   *     <tr>
82   *         <td>13</td>
83   *         <td>log audit</td>
84   *     </tr>
85   *     <tr>
86   *         <td>14</td>
87   *         <td>log alert</td>
88   *     </tr>
89   *     <tr>
90   *         <td>15</td>
91   *         <td>clock daemon (note 2)</td>
92   *     </tr>
93   *     <tr>
94   *         <td>16</td>
95   *         <td>local use 0 (local0)</td>
96   *     </tr>
97   *     <tr>
98   *         <td>17</td>
99   *         <td>local use 1 (local1)</td>
100  *     </tr>
101  *     <tr>
102  *         <td>18</td>
103  *         <td>local use 2 (local2)</td>
104  *     </tr>
105  *     <tr>
106  *         <td>19</td>
107  *         <td>local use 3 (local3)</td>
108  *     </tr>
109  *     <tr>
110  *         <td>20</td>
111  *         <td>local use 4 (local4)</td>
112  *     </tr>
113  *     <tr>
114  *         <td>21</td>
115  *         <td>local use 5 (local5)</td>
116  *     </tr>
117  *     <tr>
118  *         <td>22</td>
119  *         <td>local use 6 (local6)</td>
120  *     </tr>
121  *     <tr>
122  *         <td>23</td>
123  *         <td>local use 7 (local7)</td>
124  *     </tr>
125  * </table>
126  */
127 public enum Facility {
128 
129     /** Kernel messages. */
130     KERN(0),
131 
132     /** User level messages. */
133     USER(1),
134 
135     /** Mail system. */
136     MAIL(2),
137 
138     /** System daemons. */
139     DAEMON(3),
140 
141     /** Security/Authorization messages. */
142     AUTH(4),
143 
144     /** Messages generated by syslogd. */
145     SYSLOG(5),
146 
147     /** Line printer subsystem. */
148     LPR(6),
149 
150     /** Network news subsystem. */
151     NEWS(7),
152 
153     /** UUCP subsystem. */
154     UUCP(8),
155 
156     /** Clock daemon. */
157     CRON(9),
158 
159     /** Security/Authorization messages. */
160     AUTHPRIV(10),
161 
162     /** FTP daemon. */
163     FTP(11),
164 
165     /** NTP subsystem. */
166     NTP(12),
167 
168     /** Log audit. */
169     LOG_AUDIT(13),
170 
171     /** Log alert. */
172     LOG_ALERT(14),
173 
174     /** Clock daemon. */
175     CLOCK(15),
176 
177     /** Local use 0. */
178     LOCAL0(16),
179 
180     /** Local use 1. */
181     LOCAL1(17),
182 
183     /** Local use 2. */
184     LOCAL2(18),
185 
186     /** Local use 3. */
187     LOCAL3(19),
188 
189     /** Local use 4. */
190     LOCAL4(20),
191 
192     /** Local use 5. */
193     LOCAL5(21),
194 
195     /** Local use 6. */
196     LOCAL6(22),
197 
198     /** Local use 7. */
199     LOCAL7(23);
200 
201     private final int code;
202 
203     Facility(final int code) {
204         this.code = code;
205     }
206 
207     /**
208      * Returns the Facility for the given string.
209      *
210      * @param name The Facility enum name, case-insensitive. If null, returns, null
211      * @return a Facility enum value or null if name is null
212      */
213     public static Facility toFacility(final String name) {
214         return toFacility(name, null);
215     }
216 
217     /**
218      * Returns the Facility for the given string.
219      *
220      * @param name The Facility enum name, case-insensitive. If null, returns, defaultFacility
221      * @param defaultFacility the Facility to return if name is null
222      * @return a Facility enum value or null if name is null
223      */
224     public static Facility toFacility(final String name, final Facility defaultFacility) {
225         return EnglishEnums.valueOf(Facility.class, name, defaultFacility);
226     }
227 
228     /**
229      * Retrieve the value of the enumeration.
230      * @return The value associated with the enumeration.
231      */
232     public int getCode() {
233         return this.code;
234     }
235 
236     /**
237      * Determine if this enumeration matches the specified name (ignoring case).
238      * @param name The name to check.
239      * @return true if the name matches this enumeration, ignoring case.
240      */
241     public boolean isEqual(final String name) {
242         return this.name().equalsIgnoreCase(name);
243     }
244 
245 }