我想将 slf4j 与 Logback 改造为遗留应用程序。好处是,遗留应用程序有自己的日志框架。所以我所要做的就是更改日志框架以记录到 slf4j 而不是 log4j。
这就像做梦一样。我很高兴,直到我注意到 Logback 为每个日志事件记录的位置:
Logger.java:...
哎呀!当我试图找出日志事件的来源时,这对我的开发人员同事没有多大帮助。
我如何告诉 Logback 在堆栈中向上查找几级以查找要记录的实际位置?
记录器类是一个实用程序类,具有如下方法:
public static void debug(String clazz, String message) {
org.slf4j.Logger logger = LoggerFactory.getLogger(clazz);
logger.debug(message);
}
查看源码找到了解决方案jcl-over-slf4j
。 slf4j 的大多数实现(包括 logback)使用实现LocationAwareLogger
,它有一个 log 方法,需要包装记录器类的完全限定类名作为其参数之一:
private static final String FQCN = Logger.class.getName();
public static void debug(String clazz, String message) {
org.slf4j.Logger logger = LoggerFactory.getLogger(clazz);
if (logger instanceof LocationAwareLogger) {
((LocationAwareLogger) logger).log(null, FQCN, LocationAwareLogger.DEBUG_INT, message, null, null);
} else {
logger.debug(message);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)