学习Logback
目录
概念简介
实用工具
使用说明
配置说明
- 概念简介
SLF4J是一个简单日志门面(Simple Logging Facade),不同于我们平时用的java.util.logging、log4j等日志框架(logging frameworks),日志门面是介于日志框架和我们业务代码之间的一个抽象层,用户编码时可以调用日志门面的方法,日志门面再根据配置的日志框架调用其方法。其实就是利用门面模式,隐藏了具体实现。SLF4J的官方用户手册除了提到每个版本的兼容性、特性等,还有一些简单案例和代码可供参考。
Logback是一个日志框架,实现了SLF4J接口,官方定位是超越Log4j。它分为三个模块,其中的logback-access模块还支持通过servlet容器的http接口访问日志系统。Logback还有三个重要组件(Logger, Appenders and Layouts)。官方文档大约150多页,学习时只要记得关键知识点即可,具体使用时再根据知识点翻阅文档细节。
参阅:https://www.liaoxuefeng.com/wiki/1252599548343744/1264739155914176
参阅:https://blog.csdn.net/qq_38136705/article/details/81055277
- 实用工具
logback官方配置转换器,可将log4j.properties转logback.xml
slf4j官方迁移器,将其他日志系统的程序迁移到slf4j下
- 使用案例
1.maven引入SLF4J和Logback
2.业务代码
package com.example;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Test {
/**
* 初始化
*/
private static Logger logger = LoggerFactory.getLogger(Test.class);
public static void main(String[] args) {
logger.debug("start.");
Test test = new Test();
logger.info(String.valueOf(test.add(1,2)));
logger.debug("end.");
}
private int add(int a, int b){
return a + b;
}
}
3.控制台打印成功
由于没有指定配置文件,logback使用的是默认配置。如果需要切换其他例如log4j2等日志框架,替换maven包和配置文件即可,不会涉及到业务代码的改动。
- 配置说明
官方配置说明文档:http://logback.qos.ch/manual/index.html
Logback的初始化步骤为:
1.在classpath下依次寻找logback-test.xml、logback.groovy、logback.xml
2.(不懂,贴原文)If no such file is found, service-provider loading facility (introduced in JDK 1.6) is used to resolve the implementation of com.qos.logback.classic.spi.Configurator interface by looking up the file META-INF\services\ch.qos.logback.classic.spi.Configurator in the class path. Its contents should specify the fully qualified class name of the desired Configurator implementation.
3.以上都失败时,将默认使用ch.qos.logback.classic.BasicConfigurator的配置
速记:
1.Logger之间有继承关系,会影响日志级别
2.官方用“大小”描述日志级别,个人倾向用“粗细”描述,即 ERROR>WARN>INFO>DEBUG>TRACE,ERROR最粗略,TRACE最细致。如果配置为INFO级别,则ERROR、WARN、INFO的日志打印都将生效
3.参数构建有性能开销,因此官方推荐参数化日志,即log.info(“Entry number: ” + i + " is " + entry[i])改为log.info(“Entry number: {} is {}”, i, entry[i])
4.组件Logger是核心,关系日志级别的继承传递以及调用等;组件Appenders则代表日志输出的目的地,如控制台、文件等;组件Layouts用于配置日志的样式
5.组件Appender种类繁多,支持邮件、日志服务器、网络、异步等等日志分发方式,主要控制日志输出规则;Appender中的Encoder替代老的Layout,主要用于日志样式配置;Appender中的Policy则用于指定日志滚动规则(“日志滚动”即日志的生成规则,如按天按月滚动),如按月、按大小滚动;组件Logger配置项较少,但根据name指定的包名含有继承特性(继承上级Logger的日志Level和Appender,默认继承root)
参阅:https://blog.csdn.net/qq_24607837/article/details/83785878
参阅:https://www.jianshu.com/p/38e8c41dcd0d
结语
日志系统包括配置大部分情况下只要会用就好,留点精力学别的吧。
后续有时间的话,将写一个web页面用于简易的logback配置文件生成,毕竟鼠标点两下获得想要的配置总比敲一堆不明所以的xml配置好,高级用法就只能在此配置基础自行修改了。
【+202007051550】使用tool.yangmin.space/logback可以完成大部分基础配置