处理Log4j2不能打印行号的问题(AsyncLogger)

 更新时间:2021年12月24日 10:04:11   作者:Kevin395  
这篇文章主要介绍了处理Log4j2不能打印行号的问题(AsyncLogger),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Log4j2不能打印行号问题(AsyncLogger)

背景

%d{yyyy-MM-dd HH:mm:ss,SSS} %level [%t] %logger{36}(%F:%L) - %m%n

日志的输出格式已经指定了文件名、行号显示,可是打印出来却是空的,为什么?答案在这里:

解决方案

pom.xml

<dependency>
    <groupId>com.lmax</groupId>
    <artifactId>disruptor</artifactId>
    <version>3.3.11</version>
</dependency>

log4j2.xml

<AsyncLogger name="com.domain.app.web" includeLocation="true">
    <AppenderRef ref="File" />
</AsyncLogger>

注意

  • includeLocation:设置成true,否则指定了行号也显示不出来;
  • disruptor:这个包需要单独引入;
  • additivity:设置成false,否则会重复;

附完整配置节点

<AsyncLogger name="com.domain.app.web" includeLocation="true" level="debug" additivity="false">
    <AppenderRef ref="File" />
</AsyncLogger>
<appender name="STD" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) [%boldYellow(%thread)] %boldGreen(%logger)(%F:%L\): %msg%n</pattern>
    </encoder>
</appender>

Log4j2异步日志中打印方法名和行号信息

解决方案

异步logger,还需要在pom.xml中添加disruptor的依赖;

includeLocation结合异步logger使用,当其设置为true时,才会显示具体的行号,以及日志所在的类名;

如果设置为false,哪怕<Pattern>设置了输出行号也不会显示出来;

pom配置

      <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
            <version>3.3.6</version>
        </dependency>

属性配置

设置 AsyncRoot 的 includeLocation 属性为 true;

xml 格式示例:

<AsyncRoot level="info" includeLocation="true">
    <AppenderRef ref="File"/>
</AsyncRoot>

yaml 格式示例:

  Loggers:
      AsyncRoot:
        level: info
        includeLocation: true
        AppenderRef:
          - ref: console
          - ref: running_log

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 实例解析Java的Jackson库中的数据绑定

    实例解析Java的Jackson库中的数据绑定

    这篇文章主要介绍了Java的Jackson库中的数据绑定,这里分为通常的简单数据绑定与全数据绑定两种情况来讲,需要的朋友可以参考下
    2016-01-01
  • JavaCV与FFmpeg音视频流处理技巧总结大全

    JavaCV与FFmpeg音视频流处理技巧总结大全

    JavaCV是一个开源的Java接口,它为几个著名的计算机视觉库(如OpenCV、FFmpeg)提供了Java封装,这篇文章主要给大家介绍了关于JavaCV与FFmpeg音视频流处理技巧总结的相关资料,需要的朋友可以参考下
    2024-05-05
  • java验证电话号码的方法

    java验证电话号码的方法

    这篇文章主要介绍了java验证电话号码的方法,需要的朋友可以参考下
    2014-02-02
  • 一文了解mybatis的延迟加载

    一文了解mybatis的延迟加载

    本文主要为大家详细介绍下mybatis的延迟加载,从原理上介绍下怎么使用、有什么好处能规避什么问题。感兴趣的小伙伴可以跟随小编一起学习一下
    2022-07-07
  • Spring Boot2.x如何自定义Endpoint

    Spring Boot2.x如何自定义Endpoint

    这篇文章主要介绍了Spring Boot2.x如何自定义Endpoint,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Spring注解实现Bean自动装配示例详解

    Spring注解实现Bean自动装配示例详解

    这篇文章主要给大家介绍了关于Spring注解实现Bean自动装配的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • java中基本注解的知识点总结

    java中基本注解的知识点总结

    在本篇文章里小编给大家整理的是一篇关于java中基本注解的知识点总结,有需要的朋友们可以跟着学习下。
    2021-06-06
  • Jmeter正则表达式提取器实现过程图解

    Jmeter正则表达式提取器实现过程图解

    这篇文章主要介绍了Jmeter正则表达式提取器实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • java实现Excel的导入、导出

    java实现Excel的导入、导出

    这篇文章主要为大家详细介绍了java实现Excel的导入、导出的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Java学习随记之多线程编程

    Java学习随记之多线程编程

    这篇文章主要介绍了Java中的多线程编程的相关知识,文中的示例代码介绍详细,对我们的学习或工作有一定的价值,感兴趣的小伙伴可以了解一下
    2021-12-12

最新评论