slf4j+log4j配置

SLF4J与Log4j的区别:

  • SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
  • Log4j是一个实际的日志解决方案,通过使用Log4j,可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。

由于slf4j是用户在部署时根据实际情况来选择日志输出方案(例如选择log4j还是选择JDK自带的日志系统),所以肯定会涉及到jar包的组合。如下图:

从图中可以了解到:

若使用slf4j+log4j,涉及的jar包如下:slf4j-api-1.7.5.jar、log4j-1.2.16.jar、slf4j-log4j12-1.7.10.jar

若使用slf4j+JDK自带的日志系统,涉及的jar包如下:slf4j-api-1.5.10.jar和slf4j-jdk14-1.5.10.jar

Maven依赖如下:

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.10</version>
</dependency>

在工程中框架会获取具体使用的日志系统。若工程中存在slf4j,则会优先使用该jar包,然后通过slf4j选择具体的日志系统。但是需要注意的是当未加入中间jar包(slf4j-log4j12.jar或slf4j-jdk14-1.5.10.jar)时只会出现漏打日志的情况,这可能与slf4j选择了默认的某一个日志系统有关系。

特别像Log4j这种工程常用的日志系统,需要特别注意的是在工程中若只使用Log4j时工程不能包含slf4j的任何jar包,否则会出现不必要的日志无法打印的问题。

也可以理解为:要么加全jar包,不要遗漏中间jar包。要么使用单一的log4j。

日志打印布局与参数设置按照具体日志系统的格式进行设置,点击Log4j配置

猜你喜欢

转载自tom-seed.iteye.com/blog/2175066
今日推荐