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.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 }