001 /******************************************************************************* 002 * Portions created by Sebastian Thomschke are copyright (c) 2005-2011 Sebastian 003 * Thomschke. 004 * 005 * All Rights Reserved. This program and the accompanying materials 006 * are made available under the terms of the Eclipse Public License v1.0 007 * which accompanies this distribution, and is available at 008 * http://www.eclipse.org/legal/epl-v10.html 009 * 010 * Contributors: 011 * Sebastian Thomschke - initial implementation. 012 *******************************************************************************/ 013 package net.sf.oval.internal; 014 015 import java.util.HashMap; 016 import java.util.Map; 017 import java.util.Map.Entry; 018 019 import net.sf.oval.internal.util.StringUtils; 020 import net.sf.oval.logging.Logger; 021 import net.sf.oval.logging.LoggerFactory; 022 import net.sf.oval.logging.LoggerFactoryJDKImpl; 023 024 /** 025 * @author Sebastian Thomschke 026 */ 027 public final class Log 028 { 029 private static LoggerFactory loggerFactory = new LoggerFactoryJDKImpl(); 030 031 /* cannot use CollectionFactoryHolder.getFactory().createMap(32) here, since 032 * the collection factory uses the Log itself which is not yet initialized 033 */ 034 private static final Map<String, Log> LOG_REGISTRY = new HashMap<String, Log>(32); 035 036 public static synchronized Log getLog(final Class< ? > clazz) throws IllegalArgumentException 037 { 038 final String name = clazz.getName(); 039 final Log log = LOG_REGISTRY.get(name); 040 if (log == null) return new Log(loggerFactory.createLogger(name)); 041 return log; 042 } 043 044 /** 045 * @return the loggerFactory 046 */ 047 public static LoggerFactory getLoggerFactory() 048 { 049 synchronized (LOG_REGISTRY) 050 { 051 return loggerFactory; 052 } 053 } 054 055 /** 056 * @param loggerFactory the loggerFactory to set 057 */ 058 public static void setLoggerFactory(final LoggerFactory loggerFactory) throws IllegalArgumentException 059 { 060 synchronized (LOG_REGISTRY) 061 { 062 Log.loggerFactory = loggerFactory; 063 for (final Entry<String, Log> entry : LOG_REGISTRY.entrySet()) 064 entry.getValue().setLogger(loggerFactory.createLogger(entry.getKey())); 065 } 066 } 067 068 private Logger logger; 069 070 /** 071 * private constructor to avoid external instantiation 072 */ 073 private Log(final Logger logger) 074 { 075 setLogger(logger); 076 } 077 078 public void debug(final String msg) 079 { 080 logger.debug(msg); 081 } 082 083 public void debug(final String msgFormat, final Object arg1) 084 { 085 if (logger.isDebug()) 086 logger.debug(StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString())); 087 } 088 089 public void debug(final String msgFormat, final Object arg1, final Object arg2) 090 { 091 if (logger.isDebug()) 092 { 093 String msg = StringUtils.replaceAll(msgFormat, "{1}", arg1 == null ? "null" : arg1.toString()); 094 msg = StringUtils.replaceAll(msg, "{2}", arg2 == null ? "null" : arg2.toString()); 095 096 logger.debug(msg); 097 } 098 } 099 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 }