我有一个想要登录的 maven 和 spring 应用程序。我热衷于使用 SLF4J。
我想将所有配置文件放入目录 {classpath}/config 中,包括 log4j.xml,然后使用 spring bean 进行初始化。
例如
<bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="org.springframework.util.Log4jConfigurer"/> <property name="targetMethod" value="initLogging"/> <property name="arguments"> <list> <value>classpath:config/log4j.xml</value> </list> </property> </bean>
但是我收到此警告并且没有记录。
log4j:WARN 找不到记录器的附加程序(org.springframework.context.support.ClassPathXmlApplicationContext)。log4j:WARN 请正确初始化 log4j 系统。log4j:WARN 有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig。
我用谷歌搜索,找不到一个简单的例子来设置它。有任何想法吗?
Spring 使用 Jakarta Commons Logging 作为日志 API。为了登录到 slf4j,您需要确保commons-logging不在类路径上。jcl-over-slf4j是公共日志记录的替换 jar。
commons-logging
jcl-over-slf4j
如果您使用的是 maven,则可以检测 commons-logging 的使用来源,mvn dependency:tree并使用依赖项排除将其从所有需要它的依赖项中排除。不过,您可能需要运行mvn dependency:tree多次,因为它只显示传递依赖项的第一次出现。
mvn dependency:tree
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency>