Log4j 2没有在JAVA中记录正确的时间

时间:2017-08-31 10:13:19

标签: java asynchronous logging log4j2

我编写了一个基本服务器,它从客户端接收数据并处理收到的消息。每当我收到时,我都会将收到的消息记录到日志文件中。现在问题是:发送到服务器的所有消息都记录在客户端。假设我在登录时从客户端发送到服务器的邮件是“18:32:23:345”,然后是我的服务器端,它显示在“18:32:23:300”收到。请注意服务器端的毫秒时间。它显示在发送消息之前收到消息。我正在使用log4j2进行异步日志记录。谁能帮帮我吗。

这是我在服务器端的Log4j2配置的XML文件:

<Configuration status="warn">
<Appenders>
    <File name="my_file_appender" fileName="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="MESSAGES.log"
                 filePattern="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="50 MB" />
        </Policies>
    </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>

根据我的观点,客户端日志记录工作正常。我的配置有问题吗?我尝试使用.properties文件实现相同的配置。但它没有用。任何人都可以告诉我如何将上述配置更改为.properties文件,因为每次加载XML都会使我的应用程序变慢。提前致谢。

0 个答案:

没有答案