SLF4J代表Simple Logging Facade for Java。它提供了Java中所有日志框架的简单抽象。因此,它使用户能够使用单个依赖项处理任何日志框架,例如:Log4j,Logback和JUL(
java.util.logging
)。可以在运行时/部署时迁移到所需的日志记录框架。每个绑定用于其各自的日志框架。下表列出了SLF4J绑定及其相应的框架。
编号 | Jar文件 | 日志框架 |
---|---|---|
1 | slf4j-nop-x.x.jar |
无操作,丢弃所有记录。 |
2 | slf4j-simple-x.x.jar |
简单的实现,打印信息和更高的消息,并将所有输出保留到System.err 。 |
3 | slf4j-jcl-x.x.jar |
Jakarta Commons Logging框架。 |
4 | slf4j-jdk14-x.x.jar |
Java.util.logging框架(JUL)。 |
5 | slf4j-log4j12-x.x.jar |
Log4J框架工作,需要有log4j.jar。 |
要使SLF4J与slf4l-api-x.x.jar
一起工作,需要在项目的类路径中添加所需记录器框架的相应Jar文件(绑定)(设置构建路径)。
要从一个框架切换到另一个框架,需要替换相应的绑定。如果未找到边界,则默认为无操作模式。
一个例子:
依赖的库:
src目录下建立 log4j.properties
### u8BBEu7F6E### log4j.rootLogger = debug,stdout,D,E ### u8F93u51FAu4FE1u606Fu5230u63A7u5236u62AC ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### u8F93u51FADEBUG u7EA7u522Bu4EE5u4E0Au7684u65E5u5FD7u5230=E://logs/error.log ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = E://logs/log.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} [ %t:%r ] - [ %p ] %m%n ### u8F93u51FAERROR u7EA7u522Bu4EE5u4E0Au7684u65E5u5FD7u5230=E://logs/error.log ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =E://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} [ %t:%r ] - [ %p ] %m%n
测试代码:
//测试日志 public static void testSlf4j() { Logger logger = LoggerFactory.getLogger(Test.class); logger.debug("132"); logger.info("456"); }
这里如果src目录下没有建立 log4j.properties ,会有警告提示
log4j:WARN No appenders could be found for logger (com.netease.qa.testng.TestngRetry).
log4j:WARN Please initialize the log4j system properly.
参考 ; https://www.yiibai.com/slf4j/slf4j_overview.html
https://www.cnblogs.com/longronglang/p/6211162.html