一、官方说明:

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks, such as java.util.logging, logback and log4j. SLF4J allows the end-user to plug in the desired logging framework at deployment time. Note that SLF4J-enabling your library/application implies the addition of only a single mandatory dependency, namely slf4j-api-1.7.25.jar.

 slf4j为多种不同的日志框架提供一个简单的门面,比如jdk自带的logging、logback、log4等等。slf4j允许终端用户在部署期插入想要的日志框架。要让你的程序使用slf4j,只需要一个单独的依赖,比如slf4j-api-1.7.25.jar.

 参考:https://www.slf4j.org/manual.html

二、如何使用呢,从最简单的hello world开始:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

但是仅有slf4j-api-1.7.25.jar还不行,这个jar包并没有提供日志实现,所以还需要导入底层的日志框架的jar包。

下面是另一个例子;

1: import org.slf4j.Logger;
 2: import org.slf4j.LoggerFactory;
 3: 
 4: public class Wombat {
 5:  
 6:   final Logger logger = LoggerFactory.getLogger(Wombat.class);
 7:   Integer t;
 8:   Integer oldT;
 9:
10:   public void setTemperature(Integer temperature) {
11:    
12:     oldT = t;        
13:     t = temperature;
14:
15:     logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
16:
17:     if(temperature.intValue() > 50) {
18:       logger.info("Temperature has risen above 50 degrees.");
19:     }
20:   }
21: } 

 

三、slf4j支持的日志框架

slf4j入门

slf4j入门

 

 上面红线主要是强调只放置一个底层日志绑定相关的jar包;不要放置多于一个的日志框架。

四、项目maven依赖

logback:

<dependency> 
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.0.13</version>
</dependency>

log4j:

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

jdk自带:

<dependency> 
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-jdk14</artifactId>
  <version>1.7.25</version>
</dependency>

五、我自己项目中使用时的日志框架配置:

<log4j.version>1.2.17</log4j.version>
<slf4j.version>1.7.18</slf4j.version>

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>${log4j.version}</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>${slf4j.version}</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j.version}</version>
</dependency>

log4j.properties:

#log4j.debug=true
#部署环境

#log4j.rootLogger=INFO,E,W,I,D
#log4j.logger.org.apache=INFO,E,W,I,D
#log4j.logger.com.newthreeboard.Demo=debug,Console,E,D

#开发调试环境
log4j.rootLogger=debug,Console,E,D
log4j.logger.org.apache.ibatis=debug,Console,E,D
log4j.logger.org.apache.http.client=OFF
log4j.logger.org.apache.http.impl.conn.Wire=OFF
log4j.logger.org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor=OFF

#log4j.logger.httpclient.wire.header=W
#log4j.logger.httpclient.wire.content=W
#log4j.logger.org.apache.http.impl=W

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.DatePattern='.' yyyy-MM-dd
log4j.appender.E.MaxFileSize=20MB
log4j.appender.E.MaxBackupIndex=100
log4j.appender.E.File = ./logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}[%p] %l %m%n

log4j.appender.W = org.apache.log4j.DailyRollingFileAppender
log4j.appender.W.DatePattern='.' yyyy-MM-dd
log4j.appender.W.MaxFileSize=20MB
log4j.appender.W.MaxBackupIndex=100
log4j.appender.W.File = ./logs/warn.log
log4j.appender.W.Append = true
log4j.appender.W.Threshold = WARN
log4j.appender.W.layout = org.apache.log4j.PatternLayout
log4j.appender.W.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}[%p] %l %m%n

log4j.appender.I = org.apache.log4j.DailyRollingFileAppender
log4j.appender.I.DatePattern='.' yyyy-MM-dd
log4j.appender.I.MaxFileSize=20MB
log4j.appender.I.MaxBackupIndex=100
log4j.appender.I.File = ./logs/info.log
log4j.appender.I.Append = true
log4j.appender.I.Threshold = INFO
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}[%p] %l %m%n

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.DatePattern='.' yyyy-MM-dd
log4j.appender.D.MaxFileSize=10MB
log4j.appender.D.MaxBackupIndex=50
log4j.appender.D.File = ./logs/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}[%p] %l %m%n

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Threshold=DEBUG
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}[%p] %l %m%n

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-12
  • 2021-06-24
  • 2021-04-20
  • 2021-11-26
  • 2022-12-23
  • 2021-09-10
猜你喜欢
  • 2021-11-02
  • 2021-06-20
  • 2021-08-08
  • 2021-12-29
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案