在运行时修改当前的log4j2配置

时间:2017-06-14 16:00:52

标签: java log4j2

我试图在运行时在代码中修改log4j2的当前配置。

我按照这里的指示 -

http://logging.apache.org/log4j/2.x/manual/customconfig.html#AddingToCurrent  在初始化后以编程方式修改当前配置。

我遇到这条线路的问题 -

 Layout layout = PatternLayout.createLayout(PatternLayout.SIMPLE_CONVERSION_PATTERN, config, null,
        null,null, null);

因为该代码不起作用,API中的构造函数与此完全不同。 API中的构造函数请求您提供一个模式选择器,我似乎无法找到很多信息,我尝试使用DefaultSelector,并使用我在这里找到的两个选择器https://logging.apache.org/log4j/2.x/manual/layouts.html(标记模式选择器和脚本模式选择器)并尝试为他们添加import语句,但我的程序找不到这些类。

我应该使用

createDefaultLayout(Configuration configuration)
而不是PatternLayout的方法,因为它将使用提供的配置的默认选项创建一个模式布局?

我注意到的一件事是在createLayout方法下我遇到了麻烦,它说它在它下面 -

Deprecated. 
Use newBuilder() instead. This will be private in a future version.

这是否意味着这种方法现在已经过时了,我根本不应该使用它?它要求使用newBuilder为自定义模式布局创建构建器吗?

此API -

https://logging.apache.org/log4j/2.0/log4j-core/apidocs/org/apache/logging/log4j/core/layout/PatternLayout.Builder.html

似乎是一个允许我提供配置文件的构建器,并且有方法来构建自己的自定义模式布局? (但是,有一个withPatternSelector的方法,我找不到任何关于这个的方法,所以我希望如果我没有指定模式选择器,它将只使用默认值?)

在运行时期间更改代码中的log4j2配置哪个方法更好?或者如果有第三种方法比你知道的更好吗?

基本上,我希望能够更改例如要保存的文件的数量(默认翻转策略)或基于时间的触发策略的天数。

有没有简单的方法呢?

感谢您的帮助。

0 个答案:

没有答案