Java日志介绍(6,end)-SLF4J
2020-03-12 16:03:10来源:博客园 阅读 ()
Java日志介绍(6,end)-SLF4J
Simple Logging Facade for Java(SLF4J)提供各种日志框架(如java.util.log、logback、log4j)的抽象,允许用户在部署时引入所需的日志框架;功能与commons-logging很类似,但SLF4J适配的日志框架更广。文中所使用到的软件版本:Java 1.8.0_191、slf4j 1.7.29。
1、SLF4J绑定日志框架
SLF4J提供多个"SLF4J绑定"的jar包,每个绑定对应于一个受支持的日志框架。
1.1、slf4j-log4j12
绑定log4j 1.2,还需引入log4j 1.2.x的jar包。
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.30</version> </dependency>
1.2、slf4j-jdk14
绑定java.util.logging(jul)
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>1.7.30</version> </dependency>
1.3、slf4j-nop
绑定nop,丢弃所有日志。
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-nop</artifactId> <version>1.7.30</version> </dependency>
1.4、slf4j-simple
绑定为简单实现,它将所有事件输出到 System.err。仅打印级别INFO和更高级别的消息。此绑定在小型应用程序上下文中可能很有用。
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.30</version> </dependency>
1.5、slf4j-jcl
绑定Jakarta Commons Logging,将所有SLF4J日志记录委派给JCL。
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jcl</artifactId> <version>1.7.30</version> </dependency>
1.6、logback-classic
logback本身就实现了绑定slf4j。
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency>
下面是一个总体的示意图:
1.7、log4j-slf4j-impl(或log4j-slf4j18-impl)
绑定log4j2,由于log4j2出现较晚,该jar包不是SLF4J提供的,由log4j2自己实现提供。
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.12.1</version> </dependency>
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j18-impl</artifactId> <version>2.12.1</version> </dependency>
log4j-slf4j-impl用于SLF4J 1.7.x 或更早版本,log4j-slf4j18-impl用于SLF4J 1.8.x或更新版本。
2、其他日志转为SLF4J
这边是把具体的日志转为SLF4J来输出日志,不能和1中绑定的对应jar同时使用,否则会造成日志事件的死循环。
2.1、jcl-over-slf4j
jcl转为slf4j,用jcl-over-slf4j替换commons-logging的jar包,不能和slf4j-jcl同时使用。
<dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.30</version> </dependency>
2.2、log4j-over-slf4j
log4j转为slf4j,用log4j-over-slf4j替换log4j12的jar包,不能和slf4j-log4j12同时使用。
<dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> <version>1.7.30</version> </dependency>
2.3、jul-to-slf4j
jul转为slf4j,引入jul-to-slf4j的jar包,不能和slf4j-jdk14同时使用。
<dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>1.7.30</version> </dependency>
在使用jul记录日志前加入如下两行代码即可转为slf4j输出:
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
下面是一个总体的示意图:
2.4、log4j-to-slf4j
log4j2转为slf4j,引入log4j-to-slf4j的jar包,该jar包不是SLF4J提供的,由log4j2自己实现提供;不能和log4j-slf4j-impl(或log4j-slf4j18-impl)同时使用。
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-to-slf4j</artifactId> <version>2.12.1</version> </dependency>
3、实际使用
package com.inspur.demo.log; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * SLF4J使用示例 */ public class SLF4JCase { public static final Logger logger = LoggerFactory.getLogger(SLF4JCase.class); public static void main(String[] args) throws Exception { System.out.println(logger.getClass()); logger.debug("This is debug message."); logger.warn("This is warn message."); for (int i = 0; i < 100; i++) { logger.info("This is info message:" + i); } } }
1、引入slf4j、logback的jar包,并使用logback.xml来配置logback,运行代码可以看到日志格式跟logback.xml中配置的一致。logback的配置可以参考:Java日志介绍(3)-Logback
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.29</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency>
2、引入slf4j、log4j、slf4j-log4j12的jar包,并使用log4j.properties来配置log4j,运行代码可以看到日志格式跟log4j.properties中配置的一致。log4j的配置可以参考:Java日志介绍(2)-Log4j
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.29</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.29</version> </dependency>
如果要使用其他日志框架,可以自行加入相关的jar并运行代码测试,这里就不一一演示了。
原文链接:https://www.cnblogs.com/wuyongyin/p/12454643.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash