日志配置

日志配置

在spring中配置日志

1.让 spring-context 排除对 commons-logging 的依赖

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>

2.添加 slf4j-api 和 jcl-over-slf4j 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j-version}</version>
<scope>runtime</scope>
</dependency>

3.如果是web项目,则配置web.xml文件的Log4jConfigLocation和Log4jConfigListener

1
2
3
4
5
6
7
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</context-param>

4.在当前classpath中添加log4j.properties配置文件

1
2
3
4
log4j.rootCategory=info, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n

问题:

1.若打印出了SLF4J: Class path contains multiple SLF4J bindings,说明jar包冲突了。slf4j就是所谓的门面模式,提供了一个接口,自己不去实现,让其他日志jar包去实现这个接口。logback、log4j什么的,都有实现这个接口,但运行的时候,必须保证只能有一个接口实现类,如果有两个或以上,就抛上面那个异常了。做下依赖排除就行了,有的时候是其他包里面引进了日志包,不是你自己引进的。

参考博客:

Spring配置日志