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.Level; 020 021 /** 022 * Severity values used by the Syslog system. 023 * 024 * <table summary="Syslog Severity Values"> 025 * <tr> 026 * <th>Numerical Code</th> 027 * <th>Severity</th> 028 * </tr> 029 * <tr> 030 * <td>0</td> 031 * <td>Emergency: system is unusable</td> 032 * </tr> 033 * <tr> 034 * <td>1</td> 035 * <td>Alert: action must be taken immediately</td> 036 * </tr> 037 * <tr> 038 * <td>2</td> 039 * <td>Critical: critical conditions</td> 040 * </tr> 041 * <tr> 042 * <td>3</td> 043 * <td>Error: error conditions</td> 044 * </tr> 045 * <tr> 046 * <td>4</td> 047 * <td>Warning: warning conditions</td> 048 * </tr> 049 * <tr> 050 * <td>5</td> 051 * <td>Notice: normal but significant condition</td> 052 * </tr> 053 * <tr> 054 * <td>6</td> 055 * <td>Informational: informational messages</td> 056 * </tr> 057 * <tr> 058 * <td>7</td> 059 * <td>Debug: debug-level messages</td> 060 * </tr> 061 * </table> 062 */ 063 public enum Severity { 064 /** System is unusable. */ 065 EMERG(0), 066 /** Action must be taken immediately. */ 067 ALERT(1), 068 /** Critical conditions. */ 069 CRITICAL(2), 070 /** Error conditions. */ 071 ERROR(3), 072 /** Warning conditions. */ 073 WARNING(4), 074 /** Normal but significant conditions. */ 075 NOTICE(5), 076 /** Informational messages. */ 077 INFO(6), 078 /** Debug level messages. */ 079 DEBUG(7); 080 081 private final int code; 082 083 private Severity(final int code) { 084 this.code = code; 085 } 086 087 /** 088 * Returns the severity code. 089 * @return The numeric value associated with the Severity. 090 */ 091 public int getCode() { 092 return this.code; 093 } 094 095 /** 096 * Determine if the name matches this Severity. 097 * @param name the name to match. 098 * @return true if the name matches, false otherwise. 099 */ 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 }