我想以编程方式调整我的日志文件位置。因此,我想覆盖log4j.properties
文件中的默认值。这并不反对我使用LogManager.resetConfiguration()
和PropertyConfigurator.configure(props)
的任何问题,以便我的文件位置更新(存储在道具中)。这种方法有效,记录文件从此时开始写入新的文件位置。
使用Weld时出现问题。这是因为Weld内部也在使用记录器,在我的记录文件中说明:2014-08-13 12:55:15.589 [main:0] DEBUG Weld.java:84 Method: <clinit> - Logging Provider: org.jboss.logging.Log4jLoggerProvider
。
由于我使用org.jboss.weld.environment.se.StartMain
作为主类,因此我对Weld的日志记录功能没有任何影响。我现在最终在2个不同的位置上有3个日志文件(如我的log4j.properties中所述)。其中一个包含一些Weld调试信息,另一个包含初始化和之后的所有日志记录信息。
因此从逻辑上讲,我最终只有一个带有日志记录文件的目录,因此Weld会调整到新的log4j文件位置。或者让log4j复制旧的日志记录内容,使用旧内容创建新的日志记录文件并删除旧的日志记录文件。
我不想使用VM参数,因为我需要以编程方式分配日志记录位置。
答案 0 :(得分:0)
在这种情况下的解决方案是使用slf4j。请参阅bridging legacy apis。
桥接完所有日志记录后,您可以使用slf4j-to-log4j将所有日志记录定向到log4j设置。