为了提高性能,我正在尝试在当前在自由配置文件服务器中运行的 REST web 方法中设置异步日志记录。
为了实现这一目标,我已经设置了以下属性:
System.setProperty("Log4jContextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
我的问题是,无论在哪里进行操作,有时它可以正常工作并且日志记录非常快,而有时则不行。
我尝试了以下位置: (a) 包含所有REST web方法的类的构造函数中 (b) 在调用REST方法之前调用的过滤器doFilter方法中 (c) 在过滤器init方法中 (d) 在REST方法本身中
这些位置没有一个能够始终正常工作。
是否有人能够解释这种行为,如果可能的话,请提供一个修复问题的建议。
编辑:似乎log4j在调用setProperty之前已被初始化。因此,我需要通过自由配置文件设置属性。
log4j2.contextSelector
和Log4JContextSelector
支持此功能-文档似乎在某些地方混合了这两个。 - Ed Randall