View Javadoc

1   package org.molwind.util;
2   
3   /*
4    * This file is part of Molwind.
5    *
6    * Molwind is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10   *
11   * Molwind is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   * GNU General Public License for more details.
15   *
16   * You should have received a copy of the GNU General Public License
17   * along with Molwind. If not, see <http://www.gnu.org/licenses/>.
18   */
19  
20  import java.util.logging.Level;
21  import java.util.logging.Logger;
22  
23  import javax.servlet.ServletContext;
24  
25  /**
26   * MolwindLogger facade delegates log requests to the underlying logger(s).
27   *
28   * @author <a href="mailto:oliver.karch@molwind.org">Oliver Karch</a>
29   * @version 1.0
30   */
31  public final class MolwindLogger {
32  
33      private Logger logger;
34      private ServletContext servletContext;
35  
36      private static MolwindLogger molwindLogger;
37  
38      private MolwindLogger(final ServletContext context) {
39          logger = Logger.getLogger("org.molwind");
40          servletContext = context;
41      }
42  
43      private MolwindLogger() {
44          this(null);
45      }
46  
47  
48      /**
49       * Returns an instance of the logger facade (optionally) initialized with a
50       * servlet context.
51       *
52       * @param context
53       *      the servlet context or null (if not available)
54       * @return
55       *      an initialized logging facility
56       */
57      public static MolwindLogger getInstance(final ServletContext context) {
58          if (molwindLogger == null) {
59              molwindLogger = new MolwindLogger(context);
60          }
61          return molwindLogger;
62      }
63  
64      /**
65       * Returns an instance of the logger facade.
66       *
67       * @return
68       *      an initialized logging facility
69       */
70      public static MolwindLogger getInstance() {
71          return getInstance(null);
72      }
73  
74  
75      private void setWarning(final String message, final Throwable cause) {
76          String fullMessage = "WARN " + message;
77  
78          if (cause != null) {
79              logger.log(Level.WARNING, fullMessage, cause);
80          } else {
81              logger.log(Level.WARNING, fullMessage);
82          }
83  
84          if (servletContext != null) {
85              servletContext.log(fullMessage, cause);
86          }
87      }
88  
89      private void setError(final String message, final Throwable cause) {
90          String fullMessage = "ERROR " + message;
91  
92          if (cause != null) {
93              logger.log(Level.WARNING, fullMessage, cause);
94          } else {
95              logger.log(Level.WARNING, fullMessage);
96          }
97  
98          if (servletContext != null) {
99              servletContext.log(fullMessage, cause);
100         }
101     }
102 
103     private void setDebugMessage(final String message, final Throwable cause) {
104         String fullMessage = "DEBUG " + message;
105 
106         if (cause != null) {
107             logger.log(Level.INFO, fullMessage, cause);
108         } else {
109             logger.log(Level.INFO, fullMessage);
110         }
111 
112         if (servletContext != null) {
113             servletContext.log(fullMessage, cause);
114         }
115     }
116 
117     private void setInfo(final String message, final Throwable cause) {
118         String fullMessage = "INFO " + message;
119 
120         if (cause != null) {
121             logger.log(Level.INFO, fullMessage, cause);
122         } else {
123             logger.log(Level.INFO, fullMessage);
124         }
125 
126         if (servletContext != null) {
127             servletContext.log(fullMessage, cause);
128         }
129     }
130 
131     private void setFatalError(final String message, final Throwable cause) {
132         String fullMessage = "FATAL " + message;
133 
134         if (cause != null) {
135             logger.log(Level.SEVERE, fullMessage, cause);
136         } else {
137             logger.log(Level.SEVERE, fullMessage);
138         }
139 
140         if (servletContext != null) {
141             servletContext.log(fullMessage, cause);
142         }
143     }
144 
145 
146     public static void warn(final String message, final Throwable cause) {
147         MolwindLogger logger = getInstance();
148         logger.setWarning(message, cause);
149     }
150     public static void error(final String message, final Throwable cause) {
151         MolwindLogger logger = getInstance();
152         logger.setError(message, cause);
153     }
154     public static void fatal(final String message, final Throwable cause) {
155         MolwindLogger logger = getInstance();
156         logger.setFatalError(message, cause);
157     }
158     public static void info(final String message, final Throwable cause) {
159         MolwindLogger logger = getInstance();
160         logger.setInfo(message, cause);
161     }
162     public static void debug(final String message, final Throwable cause) {
163         MolwindLogger logger = getInstance();
164         logger.setDebugMessage(message, cause);
165     }
166 
167 
168     public static void warn(final String message) {
169         MolwindLogger logger = getInstance();
170         logger.setWarning(message, null);
171     }
172     public static void error(final String message) {
173         MolwindLogger logger = getInstance();
174         logger.setError(message, null);
175     }
176     public static void fatal(final String message) {
177         MolwindLogger logger = getInstance();
178         logger.setFatalError(message, null);
179     }
180     public static void info(final String message) {
181         MolwindLogger logger = getInstance();
182         logger.setInfo(message, null);
183     }
184     public static void debug(final String message) {
185         MolwindLogger logger = getInstance();
186         logger.setDebugMessage(message, null);
187     }
188 
189 
190     public static void warn(final Throwable cause) {
191         MolwindLogger logger = getInstance();
192         logger.setWarning("", cause);
193     }
194     public static void error(final Throwable cause) {
195         MolwindLogger logger = getInstance();
196         logger.setError("", cause);
197     }
198     public static void fatal(final Throwable cause) {
199         MolwindLogger logger = getInstance();
200         logger.setFatalError("", cause);
201     }
202     public static void info(final Throwable cause) {
203         MolwindLogger logger = getInstance();
204         logger.setInfo("", cause);
205     }
206     public static void debug(final Throwable cause) {
207         MolwindLogger logger = getInstance();
208         logger.setDebugMessage("", cause);
209     }
210 
211 }