View Javadoc

1   /*
2    *  Licensed to the Apache Software Foundation (ASF) under one
3    *  or more contributor license agreements.  See the NOTICE file
4    *  distributed with this work for additional information
5    *  regarding copyright ownership.  The ASF licenses this file
6    *  to you under the Apache License, Version 2.0 (the
7    *  "License"); you may not use this file except in compliance
8    *  with the License.  You may obtain a copy of the License at
9    *
10   *    http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *  Unless required by applicable law or agreed to in writing,
13   *  software distributed under the License is distributed on an
14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *  KIND, either express or implied.  See the License for the
16   *  specific language governing permissions and limitations
17   *  under the License.
18   *
19   */
20  package org.apache.mina.filter.logging;
21  
22  import org.slf4j.Logger;
23  
24  /**
25   * Defines a logging level.
26   * 
27   * @author The Apache MINA Project (dev@mina.apache.org)
28   * @version $Rev: 644681 $, $Date: 2008-04-04 13:10:59 +0200 (ven, 04 avr 2008) $
29   * 
30   * @see LoggingFilter
31   */
32  public enum LogLevel {
33  
34      /**
35       * {@link LogLevel} which will not log any information
36       */
37      NONE(new LogLevelLogger() {
38          public void log(Logger logger, String message, Object arg) {
39              // Do nothing.
40          }
41  
42          public void log(Logger logger, String message, Object[] args) {
43              // Do nothing.
44          }
45  
46          public void log(Logger logger, String message, Throwable cause) {
47              // Do nothing.
48          }
49      }),
50  
51      /**
52       * {@link LogLevel} which logs messages on the TRACE level.
53       */
54      TRACE(new LogLevelLogger() {
55          public void log(Logger logger, String message, Object arg) {
56              logger.trace(message, arg);
57          }
58  
59          public void log(Logger logger, String message, Object[] args) {
60              logger.trace(message, args);
61          }
62  
63          public void log(Logger logger, String message, Throwable cause) {
64              logger.trace(message, cause);
65          }
66      }),
67  
68      /**
69       * {@link LogLevel} which logs messages on the DEBUG level.
70       */
71      DEBUG(new LogLevelLogger() {
72          public void log(Logger logger, String message, Object arg) {
73              logger.debug(message, arg);
74          }
75  
76          public void log(Logger logger, String message, Object[] args) {
77              logger.debug(message, args);
78          }
79  
80          public void log(Logger logger, String message, Throwable cause) {
81              logger.debug(message, cause);
82          }
83      }),
84  
85      /**
86       * {@link LogLevel} which logs messages on the INFO level.
87       */
88      INFO(new LogLevelLogger() {
89          public void log(Logger logger, String message, Object arg) {
90              logger.info(message, arg);
91          }
92  
93          public void log(Logger logger, String message, Object[] args) {
94              logger.info(message, args);
95          }
96  
97          public void log(Logger logger, String message, Throwable cause) {
98              logger.info(message, cause);
99          }
100     }),
101 
102     /**
103      * {@link LogLevel} which logs messages on the WARN level.
104      */
105     WARN(new LogLevelLogger() {
106         public void log(Logger logger, String message, Object arg) {
107             logger.warn(message, arg);
108         }
109 
110         public void log(Logger logger, String message, Object[] args) {
111             logger.warn(message, args);
112         }
113 
114         public void log(Logger logger, String message, Throwable cause) {
115             logger.warn(message, cause);
116         }
117     }),
118 
119     /**
120      * {@link LogLevel} which logs messages on the ERROR level.
121      */
122     ERROR(new LogLevelLogger() {
123         public void log(Logger logger, String message, Object arg) {
124             logger.error(message, arg);
125         }
126 
127         public void log(Logger logger, String message, Object[] args) {
128             logger.error(message, args);
129         }
130 
131         public void log(Logger logger, String message, Throwable cause) {
132             logger.error(message, cause);
133         }
134     });
135 
136     private final LogLevelLogger logger;
137 
138     private LogLevel(LogLevelLogger logger) {
139         this.logger = logger;
140     }
141 
142     void log(Logger logger, String format, Object arg) {
143         this.logger.log(logger, format, arg);
144     }
145 
146     void log(Logger logger, String format, Object[] args) {
147         this.logger.log(logger, format, args);
148     }
149 
150     void log(Logger logger, String message, Throwable cause) {
151         this.logger.log(logger, message, cause);
152     }
153 
154     private interface LogLevelLogger {
155         void log(Logger logger, String message, Object arg);
156         void log(Logger logger, String message, Object[] args);
157         void log(Logger logger, String message, Throwable cause);
158     }
159 }