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.Level; 20 21 /** 22 * Severity values used by the Syslog system. 23 * 24 * <table summary="Syslog Severity Values"> 25 * <tr> 26 * <th>Numerical Code</th> 27 * <th>Severity</th> 28 * </tr> 29 * <tr> 30 * <td>0</td> 31 * <td>Emergency: system is unusable</td> 32 * </tr> 33 * <tr> 34 * <td>1</td> 35 * <td>Alert: action must be taken immediately</td> 36 * </tr> 37 * <tr> 38 * <td>2</td> 39 * <td>Critical: critical conditions</td> 40 * </tr> 41 * <tr> 42 * <td>3</td> 43 * <td>Error: error conditions</td> 44 * </tr> 45 * <tr> 46 * <td>4</td> 47 * <td>Warning: warning conditions</td> 48 * </tr> 49 * <tr> 50 * <td>5</td> 51 * <td>Notice: normal but significant condition</td> 52 * </tr> 53 * <tr> 54 * <td>6</td> 55 * <td>Informational: informational messages</td> 56 * </tr> 57 * <tr> 58 * <td>7</td> 59 * <td>Debug: debug-level messages</td> 60 * </tr> 61 * </table> 62 */ 63 public enum Severity { 64 /** System is unusable. */ 65 EMERG(0), 66 /** Action must be taken immediately. */ 67 ALERT(1), 68 /** Critical conditions. */ 69 CRITICAL(2), 70 /** Error conditions. */ 71 ERROR(3), 72 /** Warning conditions. */ 73 WARNING(4), 74 /** Normal but significant conditions. */ 75 NOTICE(5), 76 /** Informational messages. */ 77 INFO(6), 78 /** Debug level messages. */ 79 DEBUG(7); 80 81 private final int code; 82 83 private Severity(final int code) { 84 this.code = code; 85 } 86 87 /** 88 * Returns the severity code. 89 * @return The numeric value associated with the Severity. 90 */ 91 public int getCode() { 92 return this.code; 93 } 94 95 /** 96 * Determine if the name matches this Severity. 97 * @param name the name to match. 98 * @return true if the name matches, false otherwise. 99 */ 100 public boolean isEqual(final String name) { 101 return this.name().equalsIgnoreCase(name); 102 } 103 104 /** 105 * Returns the Severity for the specified Level. 106 * @param level The Level. 107 * @return The matching Severity, or DEBUG if there is no match. 108 */ 109 public static Severity getSeverity(final Level level) { 110 switch (level.getStandardLevel()) { 111 case ALL: 112 return DEBUG; 113 case TRACE: 114 return DEBUG; 115 case DEBUG: 116 return DEBUG; 117 case INFO: 118 return INFO; 119 case WARN: 120 return WARNING; 121 case ERROR: 122 return ERROR; 123 case FATAL: 124 return ALERT; 125 case OFF: 126 return EMERG; 127 } 128 return DEBUG; 129 } 130 }