我是log4j2的新手。以前我正在使用log4j。我正在遷移到第2部分的原因是異步日誌記錄。在搜索Internet後,我能夠編寫一個實際創建兩個日誌文件「Errors.log」和「Messages.log」的配置文件。現在的問題是:我將與遠離我的服務器進行通信。我寫了一個與服務器通信併發送請求的客戶端,服務器向我發送響應。在任何情況下,請求至少需要10毫秒才能到達服務器並獲取響應。但在我的日誌文件中,它顯示發送到服務器並從服務器接收的請求是同時(相同的毫秒)。我正在使用異步日誌記錄。這是否導致錯誤的時間戳?或者我所用的政策是造成這些問題?我的自定義Log4j2 XML配置文件中記錄時間不正確Java
下面是我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>
任何人都可以請我的配置文件。我只需要創建兩個單獨的日誌文件,一個用於存儲信息消息,另一個用於存儲錯誤。這應該會在每次運行我的應用程序時創建一個新文件,並且它不應該刪除以前的日誌。日誌的大小可以是任何東西。如果大小已經超過,它應該創建一個新文件並將數據寫入它。無論運行應用程序多少天,日誌都需要存儲,整個過程必須以異步方式完成。
我也是用下面的VM選項用於異步日誌:
-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector