View Javadoc
1   /*******************************************************************************
2    * Portions created by Sebastian Thomschke are copyright (c) 2005-2011 Sebastian
3    * Thomschke.
4    * 
5    * All Rights Reserved. This program and the accompanying materials
6    * are made available under the terms of the Eclipse Public License v1.0
7    * which accompanies this distribution, and is available at
8    * http://www.eclipse.org/legal/epl-v10.html
9    * 
10   * Contributors:
11   *     Sebastian Thomschke - initial implementation.
12   *******************************************************************************/
13  package net.sf.oval.internal;
14  
15  import java.util.HashMap;
16  import java.util.Map;
17  import java.util.Map.Entry;
18  
19  import net.sf.oval.internal.util.StringUtils;
20  import net.sf.oval.logging.Logger;
21  import net.sf.oval.logging.LoggerFactory;
22  import net.sf.oval.logging.LoggerFactoryJDKImpl;
23  
24  /**
25   * @author Sebastian Thomschke
26   */
27  public final class Log
28  {
29  	private static LoggerFactory loggerFactory = new LoggerFactoryJDKImpl();
30  
31  	/* cannot use CollectionFactoryHolder.getFactory().createMap(32) here, since 
32  	 * the collection factory uses the Log itself which is not yet initialized
33  	 */
34  	private static final Map<String, Log> LOG_REGISTRY = new HashMap<String, Log>(32);
35  
36  	public static synchronized Log getLog(final Class< ? > clazz) throws IllegalArgumentException
37  	{
38  		final String name = clazz.getName();
39  		final Log log = LOG_REGISTRY.get(name);
40  		if (log == null) return new Log(loggerFactory.createLogger(name));
41  		return log;
42  	}
43  
44  	/**
45  	 * @return the loggerFactory
46  	 */
47  	public static LoggerFactory getLoggerFactory()
48  	{
49  		synchronized (LOG_REGISTRY)
50  		{
51  			return loggerFactory;
52  		}
53  	}
54  
55  	/**
56  	 * @param loggerFactory the loggerFactory to set
57  	 */
58  	public static void setLoggerFactory(final LoggerFactory loggerFactory) throws IllegalArgumentException
59  	{
60  		synchronized (LOG_REGISTRY)
61  		{
62  			Log.loggerFactory = loggerFactory;
63  			for (final Entry<String, Log> entry : LOG_REGISTRY.entrySet())
64  				entry.getValue().setLogger(loggerFactory.createLogger(entry.getKey()));
65  		}
66  	}
67  
68  	private Logger logger;
69  
70  	/**
71  	 * private constructor to avoid external instantiation
72  	 */
73  	private Log(final Logger logger)
74  	{
75  		setLogger(logger);
76  	}
77  
78  	public void debug(final String msg)
79  	{
80  		logger.debug(msg);
81  	}
82  
83  	public void debug(final String msgFormat, final Object arg1)
84  	{
85  		if (logger.isDebug())
86  			logger.debug(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()));
87  	}
88  
89  	public void debug(final String msgFormat, final Object arg1, final Object arg2)
90  	{
91  		if (logger.isDebug())
92  		{
93  			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
94  			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
95  
96  			logger.debug(msg);
97  		}
98  	}
99  
100 	public void debug(final String msgFormat, final Object arg1, final Object arg2, final Object arg3)
101 	{
102 		if (logger.isDebug())
103 		{
104 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
105 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
106 			msg = StringUtils.replaceAll(msg, "{3}", arg3 == null ? "null" : arg3.toString());
107 
108 			logger.debug(msg);
109 		}
110 	}
111 
112 	public void debug(final String msgFormat, final Object arg1, final Object arg2, final Throwable t)
113 	{
114 		if (logger.isDebug())
115 		{
116 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
117 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
118 
119 			logger.debug(msg, t);
120 		}
121 	}
122 
123 	public void debug(final String msgFormat, final Object arg1, final Throwable t)
124 	{
125 		if (logger.isDebug())
126 			logger.debug(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()), t);
127 	}
128 
129 	public void debug(final String msg, final Throwable t)
130 	{
131 		logger.debug(msg, t);
132 	}
133 
134 	public void error(final String msg)
135 	{
136 		logger.error(msg);
137 	}
138 
139 	public void error(final String msgFormat, final Object arg1)
140 	{
141 		if (logger.isError())
142 			logger.error(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()));
143 	}
144 
145 	public void error(final String msgFormat, final Object arg1, final Object arg2)
146 	{
147 		if (logger.isError())
148 		{
149 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
150 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
151 
152 			logger.error(msg);
153 		}
154 	}
155 
156 	public void error(final String msgFormat, final Object arg1, final Object arg2, final Object arg3)
157 	{
158 		if (logger.isError())
159 		{
160 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
161 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
162 			msg = StringUtils.replaceAll(msg, "{3}", arg3 == null ? "null" : arg3.toString());
163 
164 			logger.error(msg);
165 		}
166 	}
167 
168 	public void error(final String msgFormat, final Object arg1, final Object arg2, final Throwable t)
169 	{
170 		if (logger.isError())
171 		{
172 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
173 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
174 
175 			logger.error(msg, t);
176 		}
177 	}
178 
179 	public void error(final String msgFormat, final Object arg1, final Throwable t)
180 	{
181 		if (logger.isError())
182 			logger.error(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()), t);
183 	}
184 
185 	public void error(final String msg, final Throwable t)
186 	{
187 		logger.error(msg, t);
188 	}
189 
190 	public void info(final String msg)
191 	{
192 		logger.info(msg);
193 	}
194 
195 	public void info(final String msgFormat, final Object arg1)
196 	{
197 		if (logger.isInfo())
198 			logger.info(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()));
199 	}
200 
201 	public void info(final String msgFormat, final Object arg1, final Object arg2)
202 	{
203 		if (logger.isInfo())
204 		{
205 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
206 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
207 
208 			logger.info(msg);
209 		}
210 	}
211 
212 	public void info(final String msgFormat, final Object arg1, final Object arg2, final Object arg3)
213 	{
214 		if (logger.isInfo())
215 		{
216 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
217 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
218 			msg = StringUtils.replaceAll(msg, "{3}", arg3 == null ? "null" : arg3.toString());
219 
220 			logger.info(msg);
221 		}
222 	}
223 
224 	public void info(final String msgFormat, final Object arg1, final Object arg2, final Throwable t)
225 	{
226 		if (logger.isInfo())
227 		{
228 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
229 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
230 
231 			logger.info(msg, t);
232 		}
233 	}
234 
235 	public void info(final String msgFormat, final Object arg1, final Throwable t)
236 	{
237 		if (logger.isInfo())
238 			logger.info(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()), t);
239 	}
240 
241 	public void info(final String msg, final Throwable t)
242 	{
243 		logger.info(msg, t);
244 	}
245 
246 	public boolean isDebug()
247 	{
248 		return logger.isDebug();
249 	}
250 
251 	public boolean isError()
252 	{
253 		return logger.isError();
254 	}
255 
256 	public boolean isInfo()
257 	{
258 		return logger.isInfo();
259 	}
260 
261 	public boolean isTrace()
262 	{
263 		return logger.isTrace();
264 	}
265 
266 	public boolean isWarn()
267 	{
268 		return logger.isWarn();
269 	}
270 
271 	private void setLogger(final Logger logger)
272 	{
273 		this.logger = logger;
274 	}
275 
276 	public void trace(final String msg)
277 	{
278 		logger.debug(msg);
279 	}
280 
281 	public void trace(final String msgFormat, final Object arg1)
282 	{
283 		if (logger.isDebug())
284 			logger.trace(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()));
285 	}
286 
287 	public void trace(final String msgFormat, final Object arg1, final Object arg2)
288 	{
289 		if (logger.isTrace())
290 		{
291 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
292 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
293 
294 			logger.trace(msg);
295 		}
296 	}
297 
298 	public void trace(final String msgFormat, final Object arg1, final Object arg2, final Object arg3)
299 	{
300 		if (logger.isTrace())
301 		{
302 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
303 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
304 			msg = StringUtils.replaceAll(msg, "{3}", arg3 == null ? "null" : arg3.toString());
305 
306 			logger.trace(msg);
307 		}
308 	}
309 
310 	public void trace(final String msgFormat, final Object arg1, final Object arg2, final Throwable t)
311 	{
312 		if (logger.isTrace())
313 		{
314 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
315 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
316 
317 			logger.trace(msg, t);
318 		}
319 	}
320 
321 	public void trace(final String msgFormat, final Object arg1, final Throwable t)
322 	{
323 		if (logger.isDebug())
324 			logger.trace(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()), t);
325 	}
326 
327 	public void trace(final String msg, final Throwable t)
328 	{
329 		logger.trace(msg, t);
330 	}
331 
332 	public void warn(final String msg)
333 	{
334 		logger.warn(msg);
335 	}
336 
337 	public void warn(final String msgFormat, final Object arg1)
338 	{
339 		if (logger.isWarn())
340 			logger.warn(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()));
341 	}
342 
343 	public void warn(final String msgFormat, final Object arg1, final Object arg2)
344 	{
345 		if (logger.isWarn())
346 		{
347 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
348 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
349 
350 			logger.warn(msg);
351 		}
352 	}
353 
354 	public void warn(final String msgFormat, final Object arg1, final Object arg2, final Object arg3)
355 	{
356 		if (logger.isWarn())
357 		{
358 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
359 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
360 			msg = StringUtils.replaceAll(msg, "{3}", arg3 == null ? "null" : arg3.toString());
361 
362 			logger.warn(msg);
363 		}
364 	}
365 
366 	public void warn(final String msgFormat, final Object arg1, final Object arg2, final Throwable t)
367 	{
368 		if (logger.isWarn())
369 		{
370 			String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString());
371 			msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString());
372 
373 			logger.warn(msg, t);
374 		}
375 	}
376 
377 	public void warn(final String msgFormat, final Object arg1, final Throwable t)
378 	{
379 		if (logger.isWarn())
380 			logger.warn(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()), t);
381 	}
382 
383 	public void warn(final String msg, final Throwable t)
384 	{
385 		logger.warn(msg, t);
386 	}
387 }