通过外部属性文件重定向Commons日志而不编辑jar或SLF4J?

时间:2014-05-20 09:43:08

标签: java logging log4j slf4j apache-commons-logging

我有一个.jar文件(例如foo.jar),我们无法改变它包含一个commons-logging.properties文件(重定向到JDK14Logging)并依赖外部commons-logging.jar文件它的记录。这个,我相信只是输出到stdout,这不是很有帮助。

我们正在使用不同的日志系统(log4J,如果它很重要),并且更愿意使用。是否有可能有一个外部属性文件(位于foo.jar本地)“覆盖”内部的 foo.jar?

我知道SLF4J 应该工作,编辑7zip中的.jar和'重新编译'可以这么说,但我觉得第一个创建了一个额外的依赖于Jar(如需要将一个带入环境中)后者创建一个依赖于某人的同时对foo.jar进行foo.jar进行相同的编辑,当/如果我离开项目时我们提供了这个。

这可能而不编辑jar或SLF4J吗??或者我是否需要咬上述一颗子弹?

1 个答案:

答案 0 :(得分:1)

快速修复(假设正在使用默认的类加载器)将创建自己的commons-logging.properties文件,该文件包含在包含不需要的commons-logging.properties文件的jar之前的类路径中的目录中。您的commons-logging.properties文件应配置为使用Log4J,尤其是您的log4j.properties文件。

但是我真的建议切换到SLF4J并使用commons-logging的SLF4J bridge implementation,这将使你所依赖的库使用的commons-logging API无关紧要,并允许你控制来自项目的日志配置(假设您正在使用Logback,通过单个logback.xml文件)。