0

我已经设置使用 log4j.xml 文件将 log4j 与 Spring 一起使用,它工作正常。我可以使用控制器在运行时更改日志级别,该控制器最终会这样做:

LogManager.getLogger("logger1").setLevel(Level.toLevel(level));

但是,我不知道如何在关机时将设置保存到我的 log4j.xml 文件中。我可以吗?有什么选择?

我是春天的新手。一个很好的简单例子将不胜感激!

4

2 回答 2

0

我能记住的唯一方法是在关机前打开文件并写入。我将涉及解析文件并编写所需的属性。

尽管请记住,您正在颠覆常规用途,并且大多数情况下意味着您正在尝试以错误的方式做某事。问问自己,你真的需要这样做。

于 2013-05-30T15:55:09.087 回答
0

如果你真的需要,你可以打电话LoggerManager.getLoggerRepository(),然后getCurrentLoggers()得到一个Enumeration。然后你遍历枚举,读取每个 Logger 的相关属性,并将它们保存在某个地方。

但是,这可能是一个坏主意有很多原因。

  • 除非您对此很聪明,否则您最终将保留大量有关未动态覆盖的记录器和级别的冗余信息。

  • 实际使用的记录器取决于代码,并且随着应用程序的发展而变化。您最终可能会维护Loggers不再使用的设置......并创建它们!

  • 如果您使用 Hibernate(例如)将设置保存到数据库中,您可能会遇到“鸡和蛋”问题。Hibernate 在启动之前需要日志记录功能,但您需要从数据库中获取设置......首先。

  • 您的日志记录配置可能最终看起来与原始 log4j 配置文件完全不同,因此很难理解正在记录什么,什么没有记录。

  • 如果您的应用程序中调整日志记录级别的代码出错,您可能会被卡住。

  • 这不是 IT 人员期望日志记录工作的方式。

于 2013-05-30T16:19:19.630 回答