Java 带有滚动文件追加器的Log4j2异步记录器未显示文件行号

Java 带有滚动文件追加器的Log4j2异步记录器未显示文件行号,java,logging,log4j,log4j2,Java,Logging,Log4j,Log4j2,Im使用具有以下依赖项的log4j2: <!-- LOG4J2 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.0-rc1</version> </dependency

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>

谢谢

首先,删除异步appender,并将异步记录器的appender ref直接指向processorlogging文件。其次,必须在异步记录器上添加includeLocation=“true”


除了异步记录器之外,还有一个异步附加器没有帮助,在这种情况下,可能会阻止includeLocation正常工作

谢谢你!!!它起作用了。。但是,嗯,除了asyn logger之外,拥有async appender怎么会是一个禁忌呢?如果你的应用程序登录到一个async logger,它实际上只是将日志事件放入一个队列(LMAX中断器)。一个单独的线程将把事件从队列中取出并发送给appender。如果appender是异步的,则事件将再次放入队列。最后,异步appender的线程将从该队列中取出事件并写入文件。所以其中一个是不必要的。AsyncLogger速度更快,因此我建议删除async appender。另外,如果您保留了这两个,您需要对这两个进行includeLocation(不确定这是否有效,未测试…)
<?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>
2014-05-23 11:42:40,368 [threadPoolTaskExecutor-5] ERROR (AsyncLogger:) - THIS IS TEST MESSAGE FOR LOGGING TEST PURPOSE