Spring使用
commons-logging它来自动检测要使用的日志框架。有多种方法可以调整选择哪种日志记录框架,因此首先要做的是确保
commons-logging绑定到log4j。
为此,请使用附加标志启动你的应用程序,该标志
-Dorg.apache.commons.logging.diagnostics.dest=STDOUT将输出发现过程的结果。
log4j的公共日志记录委托
现在,你需要确保使用期望的配置初始化log4j。默认情况下,
log4j log4j.xml在类路径的根目录下搜索文件,log4j.properties如果未找到,则回退到文件。你正在使用的一个库可能(错误地)log4j.xml在根目录下有一个文件。
要调试log4j,请使用附加标志再次运行你的应用程序
-Dlog4j.debug=true。这将输出确切的记录器和配置文件的位置。
commons-logging不委托给log4j
如果
commons-logging不委托给
log4j,则意味着涉及另一个日志框架。最常见的情况是,你的应用程序附带
jcl-over-slf4j.jar,一个简易替换的
commons-logging使用
slf4j幕后。
在这种情况下,Spring使用
commons-logging配置为委托给的
slf4j。因此,实质上,Spring正在使用
slf4j。但是
slf4j是一个简单的日志记录外观,需要绑定到实际框架。
从1.6.0开始,如果在类路径上未找到绑定,则
SLF4J将默认为无操作实现。
找到绑定库后(可能是
logback或
log4j例如),请检查slf4j绑定到的日志记录框架的配置。
在这种情况下,你可能
logback在类路径中。由于它是的纯实现
slf4j,因此不需要绑定库,并且如果没有提供配置文件,则它会登录调试,这实际上与你的问题匹配。要解决你的问题,请从依赖项中排除logback,并添加
slf4j-log4j12以使用log4j配置slf4j。



