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 条评论
登录 后参与评论

相关文章

来自专栏zingpLiu

打包命令tar

tar是linux下最常用的打包命令,使用tar打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的,也有.gz或.bz2结尾的。

3305
来自专栏SpringSpace.cn

使用 Kotlin 和Spring Boot 2.0快速开发REST API客户端 顶

在上一篇文章使用 Kotlin 和Spring Boot 2.0快速开发REST API接口内介绍了如何使用简单代码快速实现REST API的服务端接口,此文简...

762
来自专栏史上最简单的Spring Cloud教程

史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

一、spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线...

3306
来自专栏栗霖积跬步之旅

关于打包后提示无法连接到mongodb的情况

昨天晚上要和前端联调。 打完jar包后发现无法连接到测试环境的数据库。 就很尴尬,最后发现问题在于mongodb的URI写错了: 正确的URI格式:mongod...

3805
来自专栏QQ音乐技术团队的专栏

Android Studio 2.2 Native 开发新特性

在本文所述新特性之外,参考资料中还提供了利用向导工具创建具有 Native 支持的 Android 新项目的方法。由于这个新特性比较明显,本文未做详述。

3830
来自专栏闻道于事

使用Spring Initializr创建项目

Spring initializr 是Spring 官方提供的一个很好的工具,可以用来用来创建一个Spring boot 的项目。可以选择使用Maven管理或者...

4245
来自专栏惨绿少年

NFS启动时报错Linux NFS:could not open connection for tcp6

1.1 启动时出现的错误 [root@znix ~]#/etc/init.d/nfs start Shutting down NFS daemon:     ...

2250
来自专栏Java技术栈

Spring Boot开启的2种方式

Spring Boot依赖 使用Spring Boot很简单,先添加基础依赖包,有以下两种方式 1. 继承spring-boot-starter-parent项...

3477
来自专栏杂烩

分布式服务框架之Dubbo整合Spring项目(一)

        先说一下架构,项目采用Maven管理依赖,总共三个项目,一个是接口包common-inter,一个是服务提供者provider,最后一个是服务消...

1971
来自专栏芋道源码1024

注册中心 Eureka 源码解析 —— 项目结构简介

本文主要基于 Eureka 1.8.X 版本 1. 概述 1.1 简介 1.2 项目结构 2. eureka-client 2.1 eureka-client-...

4718

扫码关注云+社区

领取腾讯云代金券