Logback 是由 SLF4J 做者开发的新一代日志框架,用于替代 log4j。html
主要特色是效率更高,架构设计够通用,适用于不一样的环境。java
Logback 分为三个模块:logback-core,logback-classic和logback-access。git
logback-core 模块是其余两个模块的基础。github
logback-classic 模块是 core 的扩展,是log4j的改进版。logback-classic 自己实现了 SLF4J API,所以能够很容易的在 logback 和其余日志框架之间来回切换,例如 log4j、java.util.logging(JUL)。web
logback-access 模块集成了 Servlet 容器,提供了 HTTP 访问日志的功能。spring
官网:http://logback.qos.chsql
中文网:http://www.logback.cnspringboot
github:https://github.com/qos-ch/log...网络
<?xml version="1.0" encoding="UTF-8"?> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,若是设置为WARN,则低于WARN的信息都不会输出 --> <!-- scan:当此属性设置为true时,配置文件若是发生改变,将会被从新加载,默认值为true。 --> <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,若是没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- 定义日志根目录 --> <property name="LOG_PATH" value="/usr/local/log/" /> <!-- 定义应用名称 --> <property name="APP_NAME" value="springboot-logback" /> <!-- 应用名称 --> <contextName>${APP_NAME}</contextName> <!-- 引用 Spring Boot 中默认的 logback 配置 --> <!-- <include resource="org/springframework/boot/logging/logback/base.xml" /> --> <!-- 能够动态修改日志输出等级 --> <jmxConfigurator /> <!--输出到控制台--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>debug</level> </filter> <encoder> <pattern>%d [%t] %5p %c:%L - %m%n</pattern> <!-- 设置字符集 --> <charset>UTF-8</charset> </encoder> </appender> <!-- 时间滚动输出 level为 INFO 日志 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_PATH}${APP_NAME}-info.log</File> <encoder> <pattern>%d [%t] %5p %c:%L - %m%n</pattern> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录,日志按天分类压缩保存--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <FileNamePattern>${LOG_PATH}${APP_NAME}/info/%d{yyyy-MM-dd}-%i.log.gz </FileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <!-- 时间滚动输出 level为 ERROR 日志 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_PATH}${APP_NAME}-error.log</File> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>error</level> </filter> <encoder> <pattern>%d [%t] %5p %c:%L - %m%n</pattern> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录,日志按天分类压缩保存--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>256MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <FileNamePattern>${LOG_PATH}${APP_NAME}/error/%d{yyyy-MM-dd}-%i.log.gz </FileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <!-- 设置须要打印日志的包及输出级别 --> <logger name="org.springframework.web" level="INFO" /> <logger name="cn.zwqh.springboot.controller" level="TRACE" /> <!-- 使用mybatis的时候,sql语句只有在 debug 级别下才会打印 --> <logger name="cn.zwqh.springboot.dao" level="debug" /> <!-- root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 不能设置为INHERITED或者同义词NULL。默认是DEBUG 能够包含零个或多个元素,标识这个appender将会添加到这个logger。 --> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="ERROR_FILE" /> </root> </configuration>
使用 groovy 配置须要添加依赖
<dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.4.17</version> </dependency>
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/... 。logback 也提供了 logback.xml 转 logback.groovy 的在线工具,地址: http://logback.qos.ch/transla... (include 标签未做解析,因此转换前把该标签去除,不然会报错)
配置文件的根节点,主要包含如下三个属性:mybatis
设置日志上下文名称,后面输出格式中能够经过定义 %contextName 来打印日志上下文名称。
配置文件的变量定义,name 表明变量的名称,value 表明变量定义的值。经过定义的值会被插入到logger上下文中。定义变量后,可使“${name}”来使用变量。
开启 JMX 的功能,能够从默认配置文件,指定文件或URL从新配置登陆,列出记录器并修改记录器级别。
JMX(Java Management Extensions,即 Java 管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX 能够跨越一系列异构操做系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。相关文档: http://logback.qos.ch/manual/...
日志输出组件,主要负责日志的输出以及格式化日志。经常使用的属性有name和class。
appender的具体实现类:
Logback 定义的日志打印级别的过滤器。能够过滤掉指定级别如下的日志不输出到文件。
表示对日志进行编码。
日志记录器的滚动策略。
用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。
使用mybatis的时候,sql语句只有在 debug 级别下才会打印
必选节点,用来指定最基础的日志输出级别,只有一个level属性
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。默认是 DEBUG 能够包含零个或多个元素,标识这个appender将会添加到这个logger。
非特殊说明,本文版权归 朝雾轻寒 全部,转载请注明出处.
原文标题:Spring Boot 2.X(十四):日志功能 Logback
原文地址: https://www.zwqh.top/article/info/23
若是文章对您有帮助,请扫码关注下个人公众号,文章持续更新中...