欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2023-01-08 11:12:35|栏目:JAVA代码|点击:

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

上一篇:SpringDataJpa创建联合索引的实现

栏    目:JAVA代码

下一篇:没有了

本文标题:处理Log4j2不能打印行号的问题(AsyncLogger)

本文地址:http://www.codeinn.net/misctech/223261.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有