Spring Boot 2.X(十四):日记功用 Logback
2019-11-18杂谈搜奇网53°c
A+ A-Logback 简介
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
Logback 运用
1.运用 logback-spring.xml 设置
<?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>
2.运用 logback.groovy 设置
运用 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/groovy.html 。logback 也供应了 logback.xml 转 logback.groovy 的在线东西,地点:http://logback.qos.ch/translator/asGroovy.html (include 标签未作剖析,所以转换前把该标签去除,不然会报错)
logback.xml 设置申明
configuration
设置文件的根节点,重要包括以下三个属性:
- scan:当此属性设置为true时,设置文件假如发作转变,将会被从新加载,默许值为true。
- scanPeriod:设置监测设置文件是不是有修正的时刻距离,假如没有给出时刻单元,默许单元是毫秒。当scan为true时,此属性见效。默许的时刻距离为1分钟。
- debug:当此属性设置为true时,将打印出logback内部日记信息,及时检察logback运转状况。默许值为false。
contextName
设置日记高低文称号,背面输出花样中能够经由过程定义 %contextName 来打印日记高低文称号。
property
设置文件的变量定义,name 代表变量的称号,value 代表变量定义的值。经由过程定义的值会被插进去到logger高低文中。定义变量后,能够使“${name}”来运用变量。
jmxConfigurator
开启 JMX 的功用,能够从默许设置文件,指定文件或URL从新设置登录,列出纪录器并修正纪录器级别。
JMX(Java Management Extensions,即 Java 治理扩大)是一个为运用程序、装备、体系等植入治理功用的框架。JMX 能够逾越一系列异构操作体系平台、体系体系结构和收集传输协定,天真的开辟无缝集成的体系、收集和效劳治理运用。相干文档:http://logback.qos.ch/manual/jmxConfig.html
appender
日记输出组件,重要担任日记的输出以及花样化日记。经常使用的属性有name和class。
- name:appender组件的称号,背面给logger指定appender运用。
- class:appender的详细完成类。经常使用的有 ConsoleAppender、FileAppender、RollingFileAppender。
appender的详细完成类:
- ConsoleAppender:向控制台输出日记内容的组件,只需定义好encoder节点就能够运用。
- FileAppender:向文件输出日记内容的组件,用法也很简单,不过因为没有日记转动战略,平常很少运用。
- RollingFileAppender:向文件输出日记内容的组件,同时能够设置日记文件转动战略,在日记到达肯定前提后生成一个新的日记文件。
Threshold filter
Logback 定义的日记打印级别的过滤器。能够过滤掉指定级别以下的日记不输出到文件。
encoder charset
示意对日记举行编码。
encoder pattern
- %d{HH:mm:ss.SSS} —— 日记输出时刻。
- %thread —— 输出日记的历程称号,用方括号括起来。这个信息在 Web 运用以及异步使命处置惩罚中很有效。
- %-5level —— 日记级别,运用5个字符靠左对齐。
- %logger{36} —— 日记输出者的名字。
- %msg —— 日记音讯。
- %n —— 换行符。
rollingPolicy
日记纪录器的转动战略。
- FileNamePattern:定义日记的切分体式格局,本文把每一天的日记归档到一个文件。
- MaxHistory:示意日记保存的天数,本文设置为30天。
logger
用来设置某一个包或许详细的某一个类的日记打印级别、以及指定 。
- name:用来指定受此logger束缚的某一个包或许详细的某一个类。
- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,另有一个特别值INHERITED或许同义词NULL,代表强制执行上级的级别。假如未设置此属性,那末当前logger将会继续上级的级别。
运用mybatis的时刻,sql语句只需在 debug 级别下才会打印
root
必选节点,用来指定最基本的日记输出级别,只需一个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
假如文章对您有协助,请扫码关注下我的民众号,文章延续更新中...