hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

Spring Boot 2.X(十四):日记功用 Logback

2019-11-18杂谈搜奇网40°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

假如文章对您有协助,请扫码关注下我的民众号,文章延续更新中...

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
Spring Boot 2.X(十四):日记功用 Logback

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282263.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>