Log4j是一种方便的日志记录工具包,平时做简单的验证性测试时,不希望使用System.out.println,同时又不希望在每个java文件中手动引入Log4j等重复工作,可以使用一种对Log4j的静态封装,代码中直接使用静态方法向控制台输出信息。其中使用StackTrace获取调用方法信息。
public class CU {
private static Log log;
static {
//BasicConfigurator.configure();
Logger root = Logger.getRootLogger();
root.addAppender(new ConsoleAppender(
new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN)));
log = LogFactory.getLog(CU.class);
}
private static StringBuilder callerInfo(){
StringBuilder builder = new StringBuilder("[")
.append(
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS")
.format(new Timestamp(System.currentTimeMillis())));
StackTraceElement elem = new RuntimeException().getStackTrace()[2];
builder
.append(" ")
.append(elem.getClassName())
.append(".")
.append(elem.getMethodName())
.append("] ");
return builder;
}
public static void debug(Object arg0) {
log.debug(callerInfo().insert(0, "[DEBUG]").append(arg0));
}
public static void info(Object arg0) {
log.info(callerInfo().insert(0, "[INFO]").append(arg0));
}
public static void warn(Object arg0) {
log.warn(callerInfo().insert(0, "[WARN]").append(arg0));
}
public static void error(Object arg0) {
log.debug(callerInfo().insert(0, "[ERROR]").append(arg0));
}
}