专栏首页Danny的专栏SLF4J和Logback日志框架详解

SLF4J和Logback日志框架详解

本文讲述SLF4J和Logback日志框架。

SLF4J是一套简单的日志外观模式的Java API,帮助在项目部署时对接各种日志实现。

LogBack在运行时使用JMX帮助修改日志配置,在生产状态下无需重启应用程序。

SLF4J


SLF4J是简单的日志外观模式框架,抽象了各种日志框架例如Logback、Log4j、Commons-logging和JDK自带的logging实现接口。它使得用户可以在部署时使用自己想要的日志框架。SLF4J是轻量级的,在性能方面几乎是零消耗的。

SLF4J没有替代任何日志框架,它仅仅是标准日志框架的外观模式。如果在类路径下除了SLF4J再没有任何日志框架,那么默认状态是在控制台输出日志。

Logback


Logback是Log4j的改进版本,而且原生支持SLF4J(因为是同一作者开发的),因此从其它日志框架如Log4j或JDK的logging迁移到Logback是完全可行的。

由于Logback原生支持SLF4J,因此Logback+SLF4J的组合是日志框架的最佳选择,比SLF4J+其它日志框架的组合要快一些。而且Logback的配置可以是XML或Groovy代码。

注意一个重要的特性,Logback通过JMX修改日志配置(比如日志级别从Debug调整到INFO),可以从JMX控制台直接操作,无需重启应用程序。

此外,Logback的异常堆栈跟踪的信息,有助于调试。

java.lang.NullPointerException: null  
at com.fimt.poc.LoggingSample.<init>(LoggingSample.java:16) [classes/:na]  
at com.fimt.poc.LoggingSample.main(LoggingSample.java:23) [fimt-logging-poc-1.0.jar/:1.0]

SLF4J API用法


1 、从org.slf4j包导入Logger和LoggerFactory

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

2、 声明日志类

private final Logger logger = LoggerFactory.getLogger(LoggingSample.class); 

3、使用debug、warn、info、error方法并跟踪适合的参数。 所有的方法默认都使用字符串作为输入。

logger.info("This is sample info statement");  

SLF4J能用于现有的日志框架如Log4j、Commons-logging、java.util.logging(JUL)

SLF4J结合Logback


在pom.xml包含下面的依赖:它会自动包含所有的依赖包logback-core、slf4j-api……

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

SLF4J结合Log4j


在pom.xml包含下面的依赖

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

SLF4J结合JUL (java.util.logging)


在pom.xml包含下面的依赖

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • html页面导出为pdf(jsPDF、iText、wkhtmltopdf)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • 无法删除数据库,因为该数据库当前正在使用

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • Web开发——服务器端应用技术简单比较

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • ASP.NET Core WebApi构建API接口服务实战演练

    跟着阿笨一起玩NET
  • 代码安全之文件包含

    PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码...

    信安之路
  • 你可能不再需要Attention:这是一个贼简单的神经机器翻译架构

    自从编码器解码器架构崛起以来,主流的神经机器翻译(NMT)模型都使用这种架构,因为它允许原文序列长度和译文序列长度不一样。而自 Bahdanau 等研究者在 1...

    机器之心
  • PySpark初级教程——第一步大数据分析(附代码实现)

    我们正在以前所未有的速度生成数据。老实说,我跟不上世界各地里产生的巨大数据量!我敢肯定你已经了解过当今时代数据的产量。McKinsey, Gartner, IB...

    磐创AI
  • 为什么我的Spring Boot自定义配置项在IDE里面不会自动提示?

    官方提供的spring boot starter的配置项,我们用IDE配置的时候一般都有自动提示的,如下图所示

    陶陶技术笔记
  • 科学家研究新型纳米马达,不会损伤细胞组织

    纳米机器人研究又有了新进展,据外媒报道,《先进材料》(Advanced Materials)近期发表文章介绍了一种新型的纳米马达,该马达采用磁场控制螺旋纳米结构...

    机器人网
  • 洛谷P1456 Monkey King

    题目描述 Once in a forest, there lived N aggressive monkeys. At the beginning, they ...

    attack

扫码关注云+社区

领取腾讯云代金券