使用Spring保持log4j设置

时间:2013-05-30 15:26:32

标签: spring spring-mvc log4j

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

虽然请记住,你正在颠覆常用,大多数时候意味着你试图以错误的方式做某事。问自己,你真的需要这样做。

答案 1 :(得分:0)

如果您确实需要,可以致电LoggerManager.getLoggerRepository(),然后getCurrentLoggers()致电Enumeration。然后遍历枚举,读取每个Logger的相关属性,并将它们保存在某处。

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

  • 除非你很聪明,否则你最终会持续存在大量关于未动态覆盖的记录器和关卡的冗余信息。

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

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

  • 您的日志配置可能最终看起来与原始的log4j配置文件完全不同,因此很难理解记录的内容和不记录的内容。

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

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