Logback 是由 SLF4J 作者开发的新一代日志框架,用于替代 log4j。
主要特点是效率更高,架构设计够通用,适用于不同的环境。
Logback 分为三个模块:logback-core,logback-classic和logback-access。
logback-core 模块是其他两个模块的基础。
logback-classic 模块是 core 的扩展,是log4j的改进版。logback-classic 本身实现了 SLF4J API,因此可以很容易的在 logback 和其他日志框架之间来回切换,例如 log4j、java.util.logging(JUL)。
logback-access 模块集成了 Servlet 容器,提供了 HTTP 访问日志的功能。
官网:http://logback.qos.ch
中文网:http://www.logback.cn
github:https://github.com/qos-ch/logback
${APP_NAME}
debug
%d [%t] %5p %c:%L - %m%n
UTF-8
${LOG_PATH}${APP_NAME}-info.log
%d [%t] %5p %c:%L - %m%n
100MB
${LOG_PATH}${APP_NAME}/info/%d{yyyy-MM-dd}-%i.log.gz
30
${LOG_PATH}${APP_NAME}-error.log
error
%d [%t] %5p %c:%L - %m%n
256MB
${LOG_PATH}${APP_NAME}/error/%d{yyyy-MM-dd}-%i.log.gz
30
使用 groovy 配置需要添加依赖
org.codehaus.groovy
groovy-all
2.4.17
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.classic.filter.ThresholdFilter
import ch.qos.logback.core.ConsoleAppender
import ch.qos.logback.core.rolling.RollingFileAppender
import ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy
import java.nio.charset.Charset
import static ch.qos.logback.classic.Level.DEBUG
import static ch.qos.logback.classic.Level.ERROR
import static ch.qos.logback.classic.Level.INFO
import static ch.qos.logback.classic.Level.TRACE
scan("60 seconds")
def LOG_PATH = "/usr/local/log/"
def APP_NAME = "springboot-logback"
context.name = "${APP_NAME}"
jmxConfigurator()
appender("CONSOLE", ConsoleAppender) {
filter(ThresholdFilter) {
level = DEBUG
}
encoder(PatternLayoutEncoder) {
pattern = "%d [%t] %5p %c:%L - %m%n"
charset = Charset.forName("UTF-8")
}
}
appender("INFO_FILE", RollingFileAppender) {
file = "${LOG_PATH}${APP_NAME}-info.log"
encoder(PatternLayoutEncoder) {
pattern = "%d [%t] %5p %c:%L - %m%n"
charset = Charset.forName("UTF-8")
}
rollingPolicy(TimeBasedRollingPolicy) {
timeBasedFileNamingAndTriggeringPolicy(SizeAndTimeBasedFNATP) {
maxFileSize = "100MB"
}
fileNamePattern = "${LOG_PATH}${APP_NAME}/info/%d{yyyy-MM-dd}-%i.log.gz"
maxHistory = 30
}
}
appender("ERROR_FILE", RollingFileAppender) {
file = "${LOG_PATH}${APP_NAME}-error.log"
filter(ThresholdFilter) {
level = ERROR
}
encoder(PatternLayoutEncoder) {
pattern = "%d [%t] %5p %c:%L - %m%n"
charset = Charset.forName("UTF-8")
}
rollingPolicy(TimeBasedRollingPolicy) {
timeBasedFileNamingAndTriggeringPolicy(SizeAndTimeBasedFNATP) {
maxFileSize = "256MB"
}
fileNamePattern = "${LOG_PATH}${APP_NAME}/error/%d{yyyy-MM-dd}-%i.log.gz"
maxHistory = 30
}
}
logger("org.springframework.web", INFO)
logger("cn.zwqh.springboot.controller", TRACE)
logger("cn.zwqh.springboot.dao", DEBUG)
root(INFO, ["CONSOLE", "INFO_FILE", "ERROR_FILE"])
详细的 logback.groovy 语法可以参考 http://logback.qos.ch/manual/groovy.html 。logback 也提供了 logback.xml 转 logback.groovy 的在线工具,地址:http://logback.qos.ch/translator/asGroovy.html (include 标签未作解析,所以转换前把该标签去除,否则会报错)
配置文件的根节点,主要包含以下三个属性:
设置日志上下文名称,后面输出格式中可以通过定义 %contextName 来打印日志上下文名称。
配置文件的变量定义,name 代表变量的名称,value 代表变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${name}”来使用变量。
开启 JMX 的功能,可以从默认配置文件,指定文件或URL重新配置登录,列出记录器并修改记录器级别。
JMX(Java Management Extensions,即 Java 管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX 可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。相关文档:http://logback.qos.ch/manual/jmxConfig.html
日志输出组件,主要负责日志的输出以及格式化日志。常用的属性有name和class。
appender的具体实现类:
Logback 定义的日志打印级别的过滤器。可以过滤掉指定级别以下的日志不输出到文件。
表示对日志进行编码。
日志记录器的滚动策略。
用来设置某一个包或者具体的某一个类的日志打印级别、以及指定。
使用mybatis的时候,sql语句只有在 debug 级别下才会打印
必选节点,用来指定最基础的日志输出级别,只有一个level属性
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。默认是 DEBUG 可以包含零个或多个元素,标识这个appender将会添加到这个logger。
github
码云
非特殊说明,本文版权归 朝雾轻寒 所有,转载请注明出处.
原文标题:Spring Boot 2.X(十四):日志功能 Logback
原文地址: https://www.zwqh.top/article/info/23
如果文章对您有帮助,请扫码关注下我的公众号,文章持续更新中…