【发布时间】:2017-03-09 08:54:29
【问题描述】:
我正在接管一个旧的 java 项目。原来的设计师已经走了。 在这个项目中,它以静态方式使用 Log4j,如下所示:
public class LogUtil {
private static final String FQCN = LogUtil.class.getName();
private static final Logger logger1 = Logger.getLogger("INFO");
private static final Logger logger2 = Logger.getLogger("ERROR");
public static void info(Object message) {
if (logger1.isInfoEnabled()) {
forcedLog(logger1, Level.INFO, message);
}
}
public static void error(Object message) {
forcedLog(logger2, Level.ERROR, message);
}
private static void forcedLog(Logger logger, Level level, Object message) {
logger.callAppenders(new LoggingEvent(FQCN, logger, level, message, null));
}
}
然后其他类可以很容易地用LogUtil.error("")和LogUtil.info("")写日志。
并且 INFO 记录器和 ERROR 记录器被配置为写入单独的文件。
但是在Log4j2中,找不到LoggingEvent类。
那么问题来了,如果我要使用Log4j2,应该如何修改这个类呢? (也许使用 log4j2 包中提供的 Log4j 1.x 桥接器?)
以这种方式使用记录器合理吗?似乎比为每个类创建记录器更容易。是否有性能或其他方面的问题?
【问题讨论】: