zoukankan      html  css  js  c++  java
  • 后端——框架——容器框架——spring_boot——《官网》阅读笔记——第四章节1(集成日志框架)

      日志框架有很多类型,Spring boot支持三种log4j2,java.logging,logback。我在实际项目中使用logback居多,而且spring boot默认的日志框架也是logback,所以其他两种类型省略。

      不论是logback与spring boot集成,还是与spring集成,掌握logback框架的知识是核心点。

      单独使用logback时,只需要两个步骤

    1. 引入logback-core,logback-classic,slfj等jar包
    2. 编写配置文件,文件名可以是logback-test.xml,logback.xml,logback.groovy中的任意一个。

      具体的核心配置项,配置logger,配置Appender,配置Encoder。

    1. 配置logger:配置root logger,配置自定义logger
    2. 配置Appender:配置consoleAppender,配置FileAppender。
    3. 配置Encoder:配置日志信息的pattern。

      与Spring boot集成也是类似的。

    1、配置Logger

      配置root logger和自定义logger,只需要在application.properties添加Logging.level.<logger-name>=<level>的配置项。

      root logger的配置

    logging.level.root = info
    

      自定义logger的配置,例如包名是learn.springBoot

    Logging.level.learn.springBoot = debug
    

      Spring boot在上述两种形式上添加了组的概念,可以将多个logger-name归为一组,从而统一定义它们的日志级别

    # group
    logging.group.test=learn.springBoot, learn.test
    logging.level.test=debug
    

      上述例子中将learn.test,learn.springBoot归为一组,统一定义它们的日志级别

    2、配置Appender

      最常使用的两种Appender是ConsoleAppender和FileAppender。

    2.1  ConsoleAppender

      ConsoleAppender是spring boot的默认值。单独使用logback时,配置ConsoleAppender,需要配置它的三个属性,encoder,target,withJansi。

    1. Encoder:配置Console的日志格式,对应logging.pattern.console配置项。
    %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} %n

      2. Target:输出流,默认值是System.out。

      3. withJansi:不同级别的日志使用不同的颜色。无需配置此项,可以在IDE上安装LogViewer插件,然后可以配置插件,我觉得这种方式更简单。

    2.2  FileAppender

      单独使用FileAppender时,通常配置的类型都是RollingFileAppender,TriggerPolicy和RollingPolicy通常都是使用的SizeAndTimeBasedRollingPolicy。

      它的配置项有以下几项:

    1. File:设置日志文件的名称,对应logging.file.name 或 logging.file.path配置项,name指定日志文件的名称; path指定日志文件存放的路径,此时日志文件的名称为spring.log。二者只配置一个
    2. Append:日志追加到文件末尾,而不是覆盖之前的内容,使用默认值即可
    3. immediateFlush:使用默认值true即可
    4. fileNamePattern:当触发生成新日志时,新日志文件的名称格式,对应logging.pattern.rolling-file-name
    ${file_root_app_history_dir}/%d{yyyy/MM,aux}/%d{yyyy-MM-dd}_log%i.zip
    

      5. maxSize:当日志文件超过此值时,触发生成新日志,对应logging.file.max-size

    logging.file.max-size=5MB
    

      6.maxHistory:指定日志文件保留的最长时间值,单位由fileNamePattern决定,例如上述配置的日期单位为天。对应logging.file.max-history

    logging.file.max-history=365
    

      7. totalSizeCap:指定日志文件的总大小,超出总大小时,会触发旧日志的删除。对应logging.file.total-size-cap

    logging.file.total-size-cap=20G
    

      8. encoder:配置日志信息的格式,对应logging.pattern.file

    logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} %logger %n[%thread] %7level: %message %n
    

      9.cleanHistoryOnStart:是否在logback启动时触发一次旧日志的删除,使用默认值即可,默认情况下由maxHistory,totalSizeCap触发即可。

    3、杂项

    3.1   loggingConfig

      从上述配置看,通过Spring boot去配置logback还是比较麻烦的,因为没有层次结构,当想指定为logback配置文件时,可以使用Logging.config配置项, 或者设置

      org.springframework.boot.logging.LoggingSystem属性值。

      它的值有三种类型

    1. 当为none时,关闭spring boot的日志功能
    2. 当为特定文件名称时,指定为特定的日志框架。
      • Logback:logback.xml,logback-spring.xml,logback.groovy,logback-spring.groovy
      • Log4j2:log4j2.xml,log4j2-spring.xml
      • JDK:logging.properties

      3. 当为自定义文件名称时,使用spring boot默认的日志框架,即logback。

      通常情况下不要使用logback.xml,这是因为logback日志框架本身也会自动加载此文件。

    3.2   SpringProfile

      在日志框架的配置文件中扩展springProfile标签。当日志配置信息包裹在SpringProfile下时,只有满足标签的name属性,才会生效

    <springProfile name="test">
    	<root level="debug">
    		<appender-ref ref="SYSOUT"></appender-ref>
    	</root>
    </springProfile>
    

      上述配置的含义是:当激活的profile中包含test时,root logger的日志级别设置为debug。

    3.3   SpringProperty

      在日志框架的配置文件中扩展springProperty标签。功能是日志配置信息中可以引入spring boot的配置项

    <springProperty scope="context" name="fluentHost" source="myapp.fluentd.host" defaultValue="localhost"/> 

      其中

    1. Scope:日志框架变量的作用域
    2. Name:日志框架变量的名称
    3. Source:spring boot配置项的名称
    4. defaultValue:默认值

    4、示例

    # Logback configuration
    debug=true
    # Logger
    # root Logger
    logging.level.root=debug
    
    # self define logger
    logging.level.learn.springBoot=info
    
    # group
    logging.group.test=learn.springBoot, learn.test
    logging.level.test=debug 
    
    # Appender
    # Console Appender
    logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} %logger %n[%thread] %7level: %message %n
    
    # File Appender
    app_name = learnSpringBoot
    file_root_app_dir = H:\logs\${app_name}
    file_root_app_history_dir =H:\logs\history
    
    logging.file.path = ${file_root_app_dir}
    logging.file.name = ${file_root_app_dir}\${app_name}_log.txt
    
    logging.pattern.rolling-file-name=${file_root_app_history_dir}/%d{yyyy/MM,aux}/%d{yyyy-MM-dd}_log%i.zip
    logging.file.max-size=5MB
    logging.file.max-history=365
    logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} %logger %n[%thread] %7level: %message %n
  • 相关阅读:
    指令级并行:动态调度技术
    单纯形法的矩阵描述
    QTextEdit回车事件重写
    整数规划
    全退
    流水线分析例题
    操作系统期中复习思考题
    流水线技术概述
    中心极限定理
    大数定律
  • 原文地址:https://www.cnblogs.com/rain144576/p/12498463.html
Copyright © 2011-2022 走看看