1 package org.grlea.logBridge.impl; 2 3 6 18 import org.grlea.logBridge.LogBridge; 19 import org.grlea.logBridge.LogBridgeFactory; 20 21 import java.util.logging.Level ; 22 import java.util.logging.Logger ; 23 import java.util.logging.LogRecord ; 24 25 46 public class 47 J2SELogBridgeFactory 48 implements LogBridgeFactory 49 { 50 public 51 J2SELogBridgeFactory() 52 { 53 } 54 55 public LogBridge 56 getLogBridge(Class sourceClass) 57 { 58 return new Bridge(Logger.getLogger(sourceClass.getName())); 59 } 60 61 private static final class 62 Bridge 63 implements LogBridge 64 { 65 private static final Level ERROR = Level.SEVERE; 66 private static final Level WARN = Level.WARNING; 67 private static final Level INFO = Level.INFO; 68 private static final Level DEBUG = Level.FINE; 69 private static final Level VERBOSE = Level.FINER; 70 private static final Level TRACE = Level.FINEST; 71 72 private final Logger logger; 73 74 public 75 Bridge(Logger logger) 76 { 77 this.logger = logger; 78 } 79 80 public boolean 81 isErrorEnabled() 82 { 83 return logger.isLoggable(ERROR); 84 } 85 86 public boolean 87 isWarnEnabled() 88 { 89 return logger.isLoggable(WARN); 90 } 91 92 public boolean 93 isInfoEnabled() 94 { 95 return logger.isLoggable(INFO); 96 } 97 98 public boolean 99 isDebugEnabled() 100 { 101 return logger.isLoggable(DEBUG); 102 } 103 104 public boolean 105 isVerboseEnabled() 106 { 107 return logger.isLoggable(VERBOSE); 108 } 109 110 public boolean 111 isTracingEnabled() 112 { 113 return logger.isLoggable(TRACE); 114 } 115 116 public void 117 error(String message) 118 { 119 logMessage(ERROR, message); 120 } 121 122 public void 123 error(String objectName, Object value) 124 { 125 logObject(ERROR, objectName, value); 126 } 127 128 public void 129 error(Throwable error) 130 { 131 logThrowable(ERROR, error); 132 } 133 134 public void 135 warn(String message) 136 { 137 logMessage(WARN, message); 138 } 139 140 public void 141 warn(String objectName, Object value) 142 { 143 logObject(WARN, objectName, value); 144 } 145 146 public void 147 warn(Throwable error) 148 { 149 logThrowable(WARN, error); 150 } 151 152 public void 153 info(String message) 154 { 155 logMessage(INFO, message); 156 } 157 158 public void 159 info(String objectName, Object value) 160 { 161 logObject(INFO, objectName, value); 162 } 163 164 public void 165 info(Throwable error) 166 { 167 logThrowable(INFO, error); 168 } 169 170 public void 171 debug(String message) 172 { 173 logMessage(DEBUG, message); 174 } 175 176 public void 177 debug(String objectName, Object value) 178 { 179 logObject(DEBUG, objectName, value); 180 } 181 182 public void 183 debug(Throwable error) 184 { 185 logThrowable(DEBUG, error); 186 } 187 188 public void 189 verbose(String message) 190 { 191 logMessage(VERBOSE, message); 192 } 193 194 public void 195 verbose(String objectName, Object value) 196 { 197 logObject(VERBOSE, objectName, value); 198 } 199 200 public void 201 verbose(Throwable error) 202 { 203 logThrowable(VERBOSE, error); 204 } 205 206 public void 207 entry(String methodName) 208 { 209 logger.entering(logger.getName(), methodName); 210 } 211 212 public void 213 exit(String methodName) 214 { 215 logger.exiting(logger.getName(), methodName); 216 } 217 218 224 private void 225 logMessage(Level level, String message) 226 { 227 if (logger.isLoggable(level)) 228 logger.log(correctLogSource(new LogRecord (level, message), 2)); 229 } 230 231 238 private void 239 logObject(Level level, String objectName, Object value) 240 { 241 if (logger.isLoggable(level)) 242 { 243 LogRecord record = correctLogSource(new LogRecord (level, objectName + ": {0}"), 2); 244 record.setParameters(new Object [] {value}); 245 logger.log(record); 246 } 247 } 248 249 255 private void 256 logThrowable(Level level, Throwable error) 257 { 258 if (logger.isLoggable(level)) 259 { 260 LogRecord record = correctLogSource(new LogRecord (level, ""), 2); 261 record.setThrown(error); 262 logger.log(record); 263 } 264 } 265 266 281 private LogRecord 282 correctLogSource(LogRecord log, int depth) 283 { 284 StackTraceElement [] stackTrace = new Throwable ().getStackTrace(); 285 286 String logSourceClassName = null; 287 String logSourceMethodName = null; 288 289 int logSourceFrame = depth + 1; 290 if (logSourceFrame < stackTrace.length) 291 { 292 StackTraceElement logSource = stackTrace[logSourceFrame]; 293 if (logSource != null) 294 { 295 logSourceClassName = logSource.getClassName(); 296 logSourceMethodName = logSource.getMethodName(); 297 } 298 } 299 300 log.setSourceClassName(logSourceClassName == null ? "Unknown" : logSourceClassName); 301 log.setSourceMethodName(logSourceMethodName == null ? "Unknown" : logSourceMethodName); 302 303 return log; 304 } 305 } 306 } | Popular Tags |