封装log4j要素:
1、对外不暴露log4j的包名和类名。
2、保护日志发生现场LocationInfo(日志发生时的类、方法、类文件及行数)。
3、方便的格式化日志字符串,MessageFormat.format()。
4、保持效率。
5、方便使用。
下面为部分片段,详情见附件。
更多功能,参考org.apache.log4j.logMF和org.apache.log4j.logSF。
1、对外不暴露log4j的包名和类名。
2、保护日志发生现场LocationInfo(日志发生时的类、方法、类文件及行数)。
3、方便的格式化日志字符串,MessageFormat.format()。
4、保持效率。
5、方便使用。
下面为部分片段,详情见附件。
更多功能,参考org.apache.log4j.logMF和org.apache.log4j.logSF。
public class Logger {
private final org.apache.log4j.Logger logger;
private Logger(Class<?> clazz) {
logger = org.apache.log4j.Logger.getLogger(clazz);
}
private Logger() {
logger = org.apache.log4j.Logger.getRootLogger();
}
public static Logger getLogger(Class<?> clazz) {
return new Logger(clazz);
}
public static Logger getRootLogger() {
return new Logger();
}
public void debug(Object message) {
if (logger.isDebugEnabled()) {
forcedLog(logger, Level.DEBUG, message);
}
}
public void debug(Object message, Throwable t) {
if (logger.isDebugEnabled()) {
forcedLog(logger, Level.DEBUG, message, t);
}
}
public void debug(String pattern, Object... arguments) {
if (logger.isDebugEnabled()) {
forcedLog(logger, Level.DEBUG, format(pattern, arguments));
}
}
public void debug(String pattern, Throwable t, Object... arguments) {
if (logger.isDebugEnabled()) {
forcedLog(logger, Level.DEBUG, format(pattern, arguments), t);
}
}
public void assertLog(boolean assertion, String message) {
if (!assertion) {
forcedLog(logger, Level.ERROR, message);
}
}
private static void forcedLog(org.apache.log4j.Logger logger, Level level, Object message) {
logger.callAppenders(new LoggingEvent(FQCN, logger, level, message, null));
}
private static void forcedLog(org.apache.log4j.Logger logger, Level level, Object message, Throwable t) {
logger.callAppenders(new LoggingEvent(FQCN, logger, level, message, t));
}
private static String format(String pattern, Object... arguments) {
return MessageFormat.format(pattern, arguments);
}
private static final String FQCN;
static {
FQCN = Logger.class.getName();
}
}