java – log4j2:为异步日志记录设置Log4jContextSelector系统属性的位置

前端之家收集整理的这篇文章主要介绍了java – log4j2:为异步日志记录设置Log4jContextSelector系统属性的位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在当前在自由配置文件服务器中运行的REST Web方法中设置异步日志记录(出于性能原因).

为此,我设置了以下属性

System.setProperty("Log4jContextSelector","org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");

我的问题是,无论我在哪里这样做,有时它的工作和记录非常快,有时它不会.

我已经在包含所有REST Web方法的类的构造函数中尝试过(a)
(b)在REST方法之前调用的过滤器doFilter方法
(c)在过滤器初始化方法
(d)在REST方法本身

这些位置都不一致.

任何人都可以提供此行为的解释,如果可能的话,建议的方法解决问题.

编辑:似乎在调用setProperty之前初始化了log4j.所以我需要做的是通过自由配置文件来设置属性.

解决方法

有一种未记录的方法为您的项目设置此值,而无需在启动期间手动传入系统属性值.

将名为log4j2.component.properties的文件添加到类路径中.这可以在大多数maven或gradle项目中通过将其保存在src / main / resources中来完成.

这个文件只是java.util.Properties文件.通过将以下行添加文件来设置上下文选择器的值.

Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector

Log4j将首先尝试读取系统属性.如果系统属性为null,则默认情况下它将回退到存储在此文件中的值.

执行此设置的代码位于Log4jContextFactory.java:91.

猜你在找的Java相关文章