log4j如何将当前log4j配置转储为属性文件格式?

时间:2016-11-15 01:23:57

标签: java logging log4j

这是一个log4j 1.X问题。我有一个在Tomcat servlet引擎中运行的代码,我无法控制log4j.properties,但我想在运行时更改日志记录配置。我已经找到了如何通过PropertyConfigurator执行此操作,并可以使用属性进行更新。有没有办法以Properties格式动态获取当前配置?

如果在log4j库中不可用,是否有外部开源库?

1 个答案:

答案 0 :(得分:0)

根据您对我的评论的回复,我非常喜欢您的想法,我可以看到它是如何非常有用的。据我所知,log4j 1.X没有提供将当前配置转储为属性文件的功能。我非常确定只实现了反序列化 - 从内存中的属性到对象,反之亦然。

$start.setTime(0, 0, 0);为例 - 如果我们查看javadoc,则没有任何迹象表明它是可序列化的,或者能够以任何方式转储其配置,更不用说作为属性。

有两种选择,它们是:

  1. 下载log4j 1.X的源代码,并通过自己实现所需功能来自定义它以满足您的需求。这可能是不可取的,因为那时你将维护一个自定义版本的log4j 1.X(更难以切换到更新版本的log4j)并且可能需要一些时间来实现它,因为你需要分析现有代码和确定如何添加您的功能。
  2. OR

    1. 修改您的设计以从另一个方向攻击问题。也许您的Web门户只是提供了一种编辑属性文件并触发该文件重新加载的方法。您将不得不面对多个用户同时尝试编辑文件的可能性,但Java提供了可用于处理此问题的锁定机制。这样,属性文件始终是最新的,因此您只需读取它并显示内容,而不必从内存中转储对象。
    2. 希望这有帮助!