【Log】为类中的所有日志打印添加前缀

文章目录

    • 前言
    • 验证
    • 探索
    • 后记

前言

有没有一种办法,在一个类中(业务逻辑)。logger.info 的时候自动加上日志前缀,这样子查日志更方便。stackoverflow 上面有对该问题的讨论,实测可用,这里记录一下。

  • 来自stackoverflow 简洁可用的方式

验证

  • 代码
@SpringBootTest
public class LogPrefixTest {

	Logger logger = LoggerFactory.getLogger(LogPrefixTest.class + " 前缀");
	
	@Test
	public void testLogger() {
		logger.error("报错了");
	}
}
  • 效果
    【Log】为类中的所有日志打印添加前缀_第1张图片

探索

以下代码的可用性探索
Logger logger = LoggerFactory.getLogger(LogPrefixTest.class + " 前缀");
【Log】为类中的所有日志打印添加前缀_第2张图片
以全路径class名和日志前缀的格式进入logger工厂

  • 加了前缀的最终拿到的logger
    【Log】为类中的所有日志打印添加前缀_第3张图片
    可以看到logger的parent依旧是以包名来获取的,并不会损失log4j.xml带来的配置体验。

  • 对比不加前缀的logger
    【Log】为类中的所有日志打印添加前缀_第4张图片

后记

值得一提的是,使用log4j和logback 都能完成加日志前缀的需求。得益于slf4j的抽象。(很大程度上也取决于log4j、logback 是同一个作者)。

另外,这样一个小需求在实现过程中还是走了弯路的,先是主动为类中的 logger.info 都套一层方法,然后上层方法进行复用。这样做的缺点也被 stackoverflow 上的老哥指出来了。
【Log】为类中的所有日志打印添加前缀_第5张图片

  • 相关链接

【Logback】开发环境怎么组织xml文件构建日志策略
【Log4j2】开发环境配置日志策略打印完整MyBatis语句到文件

你可能感兴趣的:(Java,基础,单元测试)