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 }