我正在编写一个可以在实时或历史模拟模式下运行的代码。我正在使用 log4j2 进行日志记录,并将日期和时间打印为每条日志消息的一部分。当我在实时模式下运行代码时效果很好;但是,当我在历史模拟模式下运行代码时,我想在日志消息中获取历史日期和时间,而不是实际的挂钟日期和时间。更改 log4j2 中日期行为的最佳方法是什么?
谢谢
我正在编写一个可以在实时或历史模拟模式下运行的代码。我正在使用 log4j2 进行日志记录,并将日期和时间打印为每条日志消息的一部分。当我在实时模式下运行代码时效果很好;但是,当我在历史模拟模式下运行代码时,我想在日志消息中获取历史日期和时间,而不是实际的挂钟日期和时间。更改 log4j2 中日期行为的最佳方法是什么?
谢谢
可能有更好的方法来做到这一点,但我设法使用 log4j2 的异步记录器和自定义时钟类来更改 log4j2 中使用的日期类:
首先编写一个实现 log4j2 的时钟类1的类,比如 org.my.date。接下来,运行将以下内容传递给 jvm 的代码:
-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -Dlog4j.Clock=org.my.date