Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义Log4j2 XML配置文件Java中的日志记录时间不正确_Java_Xml_Logging_Log4j2_Configuration Files - Fatal编程技术网

自定义Log4j2 XML配置文件Java中的日志记录时间不正确

自定义Log4j2 XML配置文件Java中的日志记录时间不正确,java,xml,logging,log4j2,configuration-files,Java,Xml,Logging,Log4j2,Configuration Files,我不熟悉log4j2。以前我使用的是log4j。我之所以迁移到第2部分是为了异步日志记录。搜索Internet后,我能够编写一个配置文件,该文件实际上创建了两个日志文件Errors.log和Messages.log。现在的问题是:我将与远离我的服务器通信。我编写了一个客户机,它与服务器通信并发送请求,然后服务器向我发送响应。在任何情况下,请求到达服务器并从服务器返回响应至少需要10毫秒。但在我的日志文件中,它显示发送到服务器的请求和从服务器接收的请求同时是相同的毫秒。我正在使用异步日志记录。这是

我不熟悉log4j2。以前我使用的是log4j。我之所以迁移到第2部分是为了异步日志记录。搜索Internet后,我能够编写一个配置文件,该文件实际上创建了两个日志文件Errors.log和Messages.log。现在的问题是:我将与远离我的服务器通信。我编写了一个客户机,它与服务器通信并发送请求,然后服务器向我发送响应。在任何情况下,请求到达服务器并从服务器返回响应至少需要10毫秒。但在我的日志文件中,它显示发送到服务器的请求和从服务器接收的请求同时是相同的毫秒。我正在使用异步日志记录。这是否导致错误的时间戳?或者我使用的政策造成了这些问题

下面是我的Log4j2 XML配置文件:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="warn">
  <Appenders>
  <File name="my_file_appender" fileName="LOG4j_LOGS/Errors.log" immediateFlush="false" append="false">
      <PatternLayout>
       <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n</Pattern>
      </PatternLayout>
    </File>
    <Async name="async_appender">
    <AppenderRef ref="my_file_appender" />
   </Async>
     <!-- file appender -->
     <RollingFile name="Error-log" fileName="LOG4j_LOGS/Messages.log"
                 filePattern="LOG4j_LOGS/Messages-%d{yyyy-MM-dd}.log">
      <!-- log pattern -->   
         <PatternLayout>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n</Pattern>
        </PatternLayout>
        <!-- set file size policy -->
        <Policies>
           <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="100 MB" />
        </Policies>
        <DefaultRolloverStrategy max="25"/>
    </RollingFile>   
  </Appenders>   
  <Loggers>
      <Logger name="Error-log" level="info" additivity="false">
       <appender-ref ref="Error-log" level="debug"/>
       </Logger>
       <Root level="info" includeLocation="false">
            <AppenderRef ref="async_appender"/>
      </Root>
  </Loggers>
</Configuration>

当以异步方式完成日志记录时,您可以将收到的消息记录到单独的队列中。由于时间戳是Appender模式的一部分,所以后台线程将日志写入磁盘,在处理它们时会对它们进行时间戳。因此,只有秩序得以保留。时间戳可能略有不同

有关更多信息,请参阅

 -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector