# logback 介绍 Logback是由log4j创始人设计的一个开源日志组件。LogBack被分为3个组件,logback-core, logback-classic 和 logback-access。 ``` 1. logback-core:提供了LogBack的核心功能,是另外两个组件的基础。 2. logback-classic:实现了Slf4j的API,所以当想配合Slf4j使用时,需要引入logback-classic。 3. logback-access:为了集成Servlet环境而准备的,可提供HTTP-access的日志接口。 Slf4j:简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。 在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。 ``` 编译期间,完成slf4j的绑定已经logback配置文件的加载。slf4j会在classpath中寻找org/slf4j/impl/StaticLoggerBinder.class(会在具体的日志框架如log4j、logback等中存在),找到并完成绑定;同时,logback也会在classpath中寻找配置文件,先找logback.configurationFile、没有则找logback.groovy,若logback.groovy也没有,则找logback-test.xml,若logback-test.xml还是没有,则找logback.xml,若连logback.xml也没有,那么说明没有配置logback的配置文件,那么logback则会启用默认的配置(日志信息只会打印在控制台)。 # logback 使用步骤 1.引入slf4j、logback相关依赖 ``` org.slf4j slf4j-api ${slf4j.version} ch.qos.logback logback-core ${logback.version} ch.qos.logback logback-classic ${logback.version} ch.qos.logback logback-access ${logback.version} ``` 2. 添加配置文件 [logback.xml](logback.xml) ``` System.out ${pattern} ${LOG_DIR}/sql_info.log ${LOG_DIR}/sql_info_%d{yyyy-MM-dd}.log.%i.gz 20MB 10 ${pattern} INFO ACCEPT DENY ${LOG_DIR}/sql_error.log ${LOG_DIR}/sql_error_%d{yyyy-MM-dd}.log.%i.gz 20MB 10 ${pattern} ERROR ACCEPT DENY ${LOG_DIR}/info.log ${LOG_DIR}/info.%d{yyyy-MM-dd}.log [%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%thread] [%logger:%line]--%mdc{client} %msg%n INFO ACCEPT DENY %d{yyyyMMdd:HH:mm:ss.SSS}%thread%-5level%F{32}%M%L%msg ${LOG_DIR}/test.html info ``` # 其他 logback以下优点总结: - 内核重写、测试充分、初始化内存加载更小,这一切让logback性能和log4j相比有诸多倍的提升 - logback非常自然地直接实现了slf4j,这个严格来说算不上优点,只是这样,再理解- slf4j的前提下会很容易理解logback,也同时很容易用其他日志框架替换logbac - logback有比较齐全的200多页的文档 - logback当配置文件修改了,支持自动重新加载配置文件,扫描过程快且安全,它并不需要另外创建一个扫描线程 - 支持自动去除旧的日志文件,可以控制已经产生日志文件的最大数量 # 参考 1. logback最佳实践 . https://jianshu.com/p/b3dedb8fb61e 2. logback官网 . https://logback.qos.ch/ 3. slf4j 官网 . https://www.slf4j.org/