Spring 春天:“是的;SimpleLogger似乎没有位置感知功能;例外

Spring 春天:“是的;SimpleLogger似乎没有位置感知功能;例外,spring,log4j,slf4j,Spring,Log4j,Slf4j,我在Spring应用程序的第一行代码中遇到异常: ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); 我将commons-logging-1.1.1.jar配置为项目库 以下是堆栈跟踪: java.lang.UnsupportedOperationException:记录器[org.slf4j.impl.SimpleLogger(org.springframework.context.sup

我在Spring应用程序的第一行代码中遇到异常:

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
我将commons-logging-1.1.1.jar配置为项目库

以下是堆栈跟踪:

java.lang.UnsupportedOperationException:记录器[org.slf4j.impl.SimpleLogger(org.springframework.context.support.ClassPathXmlApplicationContext)]似乎不知道位置

位于org.apache.log4j.Category.log(Category.java:347) 位于org.apache.commons.logging.impl.Log4JLogger.info(Log4JLogger.java:199) 位于org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:456) 位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:394) 位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)
在org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83)

看起来您同时使用了多个日志框架。此错误似乎是SLF4J和Log4J配置之间冲突的症状

看看这篇帖子:

哪些国家

代码日志(字符串FQCN,优先级p, 对象消息,Throwable(t)方法抛出 异常,因为调用方 需要位置感知日志记录,但 实际的记录器实现不是很好 能够提供“定位” 意识”

在没有更多信息的情况下,我的最佳猜测是您引用了一个slf4j jar,比如slf4j-nop-1.6.1.jar,或者其他通过指向Logger类的非操作性实现来关闭日志记录的东西

找到罪魁祸首并将其删除(或替换为slf4j-log4j版本)

你在用Maven吗


如果是这样,请打开pom文件的依赖关系图,并搜索名称中包含slf4j的所有依赖关系。删除一个看起来像NOOP jar的项目。

这是一个Spring/Hibernate项目,不知何故,我在项目中包括了一个版本化和未版本化的slf4j-simple.jar,作为Hibernate配置的一部分。我删除了slf4j-simple.jar,使slf4j-simple-1.4.2.jar与我正在使用的Hibernate发行版中的slf4j-simple-api-1.4.2.jar匹配。一切都很好。很高兴你解决了。我认为,我喜欢SLF4J背后的理论,但在实践中,它似乎会导致很多类似的问题。真正令人痛苦的是,当您使用的框架依赖于日志系统,然后您会陷入这些系统中。哎哟。