加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:57:17 所属栏目:Java 来源:网络整理
导读:我试图在当前在自由配置文件服务器中运行的REST Web方法中设置异步日志记录(出于性能原因). 为此,我设置了以下属性: System.setProperty("Log4jContextSelector","org.apache.logging.log4j.core.async.AsyncLoggerContextSelector"); 我的问题是,无论我在
我试图在当前在自由配置文件服务器中运行的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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读