文章目录
- 前言
- 验证
- 探索
- 后记
前言
有没有一种办法,在一个类中(业务逻辑)。logger.info
的时候自动加上日志前缀,这样子查日志更方便。stackoverflow 上面有对该问题的讨论,实测可用,这里记录一下。
- 来自stackoverflow 简洁可用的方式
验证
- 代码
@SpringBootTest
public class LogPrefixTest {
Logger logger = LoggerFactory.getLogger(LogPrefixTest.class + " 前缀");
@Test
public void testLogger() {
logger.error("报错了");
}
}
- 效果
探索
以下代码的可用性探索
Logger logger = LoggerFactory.getLogger(LogPrefixTest.class + " 前缀");
以全路径class名和日志前缀的格式进入logger工厂
-
加了前缀的最终拿到的logger
可以看到logger的parent依旧是以包名来获取的,并不会损失log4j.xml带来的配置体验。 -
对比不加前缀的logger
后记
值得一提的是,使用log4j和logback 都能完成加日志前缀的需求。得益于slf4j的抽象。(很大程度上也取决于log4j、logback 是同一个作者)。
另外,这样一个小需求在实现过程中还是走了弯路的,先是主动为类中的 logger.info
都套一层方法,然后上层方法进行复用。这样做的缺点也被 stackoverflow 上的老哥指出来了。
- 相关链接
【Logback】开发环境怎么组织xml文件构建日志策略
【Log4j2】开发环境配置日志策略打印完整MyBatis语句到文件