Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: log4j/Log4jLogger.java


1   /*
2    * $Header: /home/cvs/jakarta-slide/src/wrappers/log4j/Log4jLogger.java,v 1.13 2004/07/28 09:32:05 ib Exp $
3    * $Revision: 1.13 $
4    * $Date: 2004/07/28 09:32:05 $
5    *
6    * ====================================================================
7    *
8    * Copyright 1999-2002 The Apache Software Foundation 
9    *
10   * Licensed under the Apache License, Version 2.0 (the "License");
11   * you may not use this file except in compliance with the License.
12   * You may obtain a copy of the License at
13   *
14   *     http://www.apache.org/licenses/LICENSE-2.0
15   *
16   * Unless required by applicable law or agreed to in writing, software
17   * distributed under the License is distributed on an "AS IS" BASIS,
18   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19   * See the License for the specific language governing permissions and
20   * limitations under the License.
21   *
22   */
23  
24  package log4j;
25  
26  import org.apache.log4j.Category;
27  import org.apache.log4j.Level;
28  import org.apache.slide.util.logger.Logger;
29  
30  /**
31   * Log4j logger implementation.
32   *
33   */
34  public class Log4jLogger implements Logger {
35      
36      
37      // ----------------------------------------------------- Instance Variables
38      
39      
40      
41      
42      // ----------------------------------------------------- Static Initializer
43      
44      
45      static {
46  //      BasicConfigurator.configure();
47      }
48      
49      
50      // ------------------------------------------------------------- Properties
51      
52      
53      /**
54       * Logger level setter.
55       *
56       * @param loggerLevel New logger level
57       */
58      public void setLoggerLevel(String channel, int loggerLevel) {
59          Level level = toLevel(loggerLevel);
60          Category cat = getCategory(channel);
61          cat.setLevel(level);
62      }
63      
64      /**
65       * Logger level setter.
66       *
67       * @param loggerLevel New logger level
68       */
69      public void setLoggerLevel(int loggerLevel) {
70          setLoggerLevel(DEFAULT_CHANNEL, loggerLevel);
71      }
72      
73      
74      /**
75       * Logger level getter.
76       *
77       * @return int logger level
78       */
79      public int getLoggerLevel(String channel) {
80          Category cat = getCategory(channel);
81          return fromLevel(cat.getLevel());
82      }
83      
84      
85      /**
86       * Logger level getter.
87       *
88       * @return int logger level
89       */
90      public int getLoggerLevel() {
91          return getLoggerLevel(DEFAULT_CHANNEL);
92      }
93      
94      
95      
96      
97      // --------------------------------------------------------- Logger Methods
98      
99      
100     /**
101      * Log an object and an associated throwable thru the specified channel and with the specified level.
102      *
103      * @param data object to log
104      * @param throwable throwable to be logged
105      * @param channel channel name used for logging
106      * @param level level used for logging
107      */
108     public void log(Object data, Throwable throwable, String channel, int level) {
109         Category cat = getCategory(channel);
110         cat.log(toLevel(level), data, throwable);
111     }
112 
113     
114     /**
115      * Log an object thru the specified channel and with the specified level.
116      *
117      * @param data The object to log.
118      * @param channel The channel name used for logging.
119      * @param level The level used for logging.
120      */
121     public void log(Object data, String channel, int level) {
122         Category cat = getCategory(channel);
123     if (data instanceof Throwable)
124             cat.log(toLevel(level), data, (Throwable)data);
125         else  
126             cat.log(toLevel(level), data);
127     }
128     
129     
130     /**
131      * Log an object with the specified level.
132      *
133      * @param data The object to log.
134      * @param level The level used for logging.
135      */
136     public void log(Object data, int level) {
137         this.log(data, DEFAULT_CHANNEL, level);
138     }
139     
140     
141     /**
142      * Log an object.
143      *
144      * @param data The object to log.
145      */
146     public void log(Object data) {
147         this.log(data, DEFAULT_CHANNEL, Logger.DEBUG);
148     }
149     
150         
151     
152     /**
153      * Check if the channel with the specified level is enabled for logging.
154      * This implementation ignores the channel specification
155      *
156      * @param channel The channel specification
157      * @param level   The level specification
158      */
159 
160     public boolean isEnabled(String channel, int level) {
161         Category cat = getCategory(channel);
162         return cat.isEnabledFor(toLevel(level));
163     }
164             
165         
166     
167     /**
168      * Check if the default channel with the specified level is enabled for logging.
169      *
170      * @param level   The level specification
171      */
172 
173     public boolean isEnabled(int level) {
174         return isEnabled(DEFAULT_CHANNEL, level);
175     }
176             
177     
178     
179     
180     // ------------------------------------------------------ Private/Protected Methods
181     
182     private Category getCategory(String channel) {
183         Category cat = Category.exists(channel);
184         if (cat == null) {
185             cat = Category.getInstance(channel);
186         }
187         return cat;
188     }
189     
190     
191     /**
192      * Convert Slide level to log4j level.
193      */
194     protected Level toLevel(int level) {
195         Level result = null;
196         
197         switch (level) {
198         case EMERGENCY:
199             result = Level.FATAL;
200             break;
201         case CRITICAL:
202             result = Level.FATAL;
203             break;
204         case ERROR:
205             result = Level.ERROR;
206             break;
207         case WARNING:
208             result = Level.WARN;
209             break;
210         case INFO:
211             result = Level.INFO;
212             break;
213         case DEBUG:
214             result = Level.DEBUG;
215             break;
216         }
217         
218         if (result == null)
219             result = Level.toLevel(level);
220         return result;
221     }
222     
223     
224     /**
225      * Convert Slide level to log4j level.
226      */
227     protected int fromLevel(Level level) {
228         int result = INFO;
229         
230         if (level.equals(Level.FATAL)){
231             result = EMERGENCY;
232         }
233         else if (level.equals(Level.ERROR)){
234             result = ERROR;
235         }
236         else if (level.equals(Level.WARN)){
237             result = WARNING;
238         }
239         else if (level.equals(Level.INFO)){
240             result = INFO;
241         }
242         else if (level.equals(Level.DEBUG)){
243             result = DEBUG;
244         }
245         else {
246             result = INFO;
247         }
248         
249         return result;
250     }
251 
252 }