当前位置: 首页 > 知识库问答 >
问题:

Log4j2异步程序,滚动文件附加程序不显示文件行号

强宾白
2023-03-14

Im使用具有以下依赖关系的log4j2:

<!-- LOG4J2 -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.0-rc1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.0-rc1</version>
    </dependency>
    <dependency>
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <version>3.0.1</version>
    </dependency>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">

<Appenders>
    <Console name="CONSOLE" target="SYSTEM_OUT">
        <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
    </Console>

    <!-- Generate rolling log for router with per hour interval policy -->
    <RollingFile name="ProcessorRollingFile" fileName="D:/ocsprocessor.log"
        filePattern="D:/ocsprocessor.log.%d{MM-dd-yyyy}-%i.log">
         <PatternLayout>
      <pattern>%d{ISO8601} [%t] %p %c %L - %m%n</pattern>
  </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" />
        </Policies>
        <DefaultRolloverStrategy max="24" />
    </RollingFile>



    <!-- Register Async appender -->
    <Async name="AsyncRollingFile">
        <AppenderRef ref="ProcessorRollingFile" />
    </Async>
</Appenders>

<Loggers>
    <AsyncLogger name="com.tritronik.logger.log4j2" level="error"
        additivity="false">
        <AppenderRef ref="AsyncRollingFile" />
    </AsyncLogger>


</Loggers>
</Configuration>

编辑:我尝试添加includeLocation=“true”,但结果仍然相同

2014-05-23 11:42:40,368 [threadPoolTaskExecutor-5] ERROR (AsyncLogger:) - THIS IS TEST MESSAGE FOR LOGGING TEST PURPOSE

谢谢

共有1个答案

夏侯旻
2023-03-14

首先,移除异步附加器,并将异步附加器的appender-ref直接指向ProcessorLoggingFile。其次,您必须在Asynclogger上添加IncludeLocation=“true”。

除了异步记录器之外,还有一个异步附加器并没有帮助,在这种情况下,可能是阻止includeLocation正确工作的原因。

 类似资料:
  • 我正在编写一个将以编程方式创建log4j2配置的程序。我在log4j2.xml文件中有一个默认配置。基于列表中的某些数据类型,我必须为每种类型创建/复制log4j配置。配置是为这些类型复制的dailyrolling appender。创建记录器配置,根据数据类型将日志消息写入不同的文件。但每天的滚动并没有发生。 下面是基于数据类型生成log4j配置的代码。如果我需要更改为基于尺寸的滚动,也可以帮助

  • 据我所知,log4j2中的RollingFileAppender不会在指定的时间(比方说-在一小时结束时)回滚,而是在超过时间阈值后到达的第一个日志事件时回滚。 有没有一种方法可以触发一个事件,一方面会导致文件滚动,另一方面不会附加到日志中(或者会附加一些无关紧要的东西,比如空字符串)?

  • 我有一个类,我在其中获取我的所有属性,并在日志记录之前隐藏它们的密码。 我已经迁移到log4j2,并希望测试这个类,检查log4j2的输出。它目前使用log4j并且可以工作,但是当我迁移到log4j2时,我得到了 但是,还有其他与这个mock的交互:mockappender.getName();->在org.apache.logging.log4j.core.config.AbstractConf

  • 有办法得到滚动文件名吗?我写了自定义插件,信号文件滚动,但我需要得到滚动文件的文件名。我的插件从java代码发出信号: 自定义插件:

  • 我有一个非常基本(几乎是教科书)的Log4J2示例,使用最新的(2.14.1): (取自官方appender文档): 程序,: <代码>pom。xml: 当我运行它时,我确实在中获得了预期的ERROR日志行;但是Java进程挂起(在完成后不会关闭)。线程转储显示(除了Java的本机线程之外)一个非守护进程异步附加线程,它仍然保持(很可能是挂起的原因)。 删除异步附加器(并直接附加到MyFile)会