Pet*_*son 44 java logging spring log4j slf4j
我有一个我想要登录的maven&spring应用程序.我很想使用SLF4J.
我想将所有配置文件放入包含log4j.xml的目录{classpath}/config中,然后使用spring bean将init放入.
例如
<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>
Run Code Online (Sandbox Code Playgroud)
但是我收到此警告并且没有记录.
log4j的:警告没有附加目的地可以发现记录器(org.springframework.context.support.ClassPathXmlApplicationContext).log4j:WARN请正确初始化log4j系统.log4j的:WARN见http://logging.apache.org/log4j/1.2/faq.html#noconfig获取更多信息.
我已经google了,找不到一个简单的例子来设置它.有任何想法吗?
Sti*_*ael 46
除了贾丁的回答:
Spring使用Jakarta Commons Logging作为日志记录API.要记录到slf4j,您需要确保commons-logging不在类路径上.jcl-over-slf4j公共采伐的替代罐子.
如果您正在使用maven,则可以检测commons-logging来自何处使用,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>
Run Code Online (Sandbox Code Playgroud)
小智 27
您可以在https://github.com/mbogoevici/spring-samples/tree/master/mvc-basic/trunk找到一个示例.您需要在POM文件中包含一些依赖项以启用日志记录.
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
仅仅为了完整性,一个logback-classic变体:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.6</version>
<scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是不要忘记禁用commons-logging从Spring 依赖中萌芽的依赖,就像在接受(Stijn)的答案中一样.
使用打击配置实现JCL API上classpath:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.0.RELEASE</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>runtime</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请点击此处
| 归档时间: |
|
| 查看次数: |
79526 次 |
| 最近记录: |