后端——框架——日志框架——logback——《官网》阅读笔记——第三章节(配置文件)

第三章节介绍日志框架的配置,分为两个部分,”auto”配置项(默认配置),配置文件。

本章的内容比较简单,因为必填的配置项只有三个,logger,root,appender。其中appender的配置稍微复杂一些,logger和root都比较简单。

默认配置部分的内容如下:

  • 查找配置文件的步骤。
  • 默认的配置项。

配置文件的内容如下:

  • Configuration标签的各个属性的含义
  • 手动配置的每一个标签项,它们都是Configuration标签的子标签。

1、查找配置文件步骤

查找配置文件的步骤如下:

  1. 首先在classpath路径下查找logback-test.xml,文件不存在进入第二步
  2. 其次查找logback.groovy,文件不存在进入第三步
  3. 之后查找logback.xml,文件不存在进入第四步
  4. 之后查找ch.qos.logback.classic.spi.Configurator同包下的实现类,不存在进入第五步
  5. 使用Configurator接口的默认实现类BasicConfigurator。

在第一章节中已经提到过这部分内容,此处不再重复。

配置文件的位置可以通过设置logback.configurationFile来指定,而且必须指定该变量为JVM系统变量或者是classpath下的变量。

注:logback-test.xml为横线不是下划线。

2、默认的配置项

默认的配置项有

设置root logger的名称为Logger.ROOT_LOGGER_NAME,该常量的值为”ROOT”,默认的Appender为ConsoleAppender,默认的日志级别为DEBUG。

设置ConsoleAppender为默认Appender,它的名称为”STDOUT”,它默认依赖的Layout类型为PatternLayoutEncoder。

PatternLayoutEncoder默认的格式为:%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}

3、配置文件

3.1   configuration

表格2- 1 Configuration标签

描述

最外部的标签,只有一个

属性

属性:debug

      说明:开启日志框架的调试模式。

      值:true或者false。默认值为false。

      是否必填:否

 

属性:scan

      说明:当配置文件修改时,重新加载配置文件。

      值:true或者false。默认值为false。

      是否必填:否

 

属性:scanPeriod

      说明:指定扫描的间隔,格式为num  unit。其中num为任意合理的数值,unit为milliseconds,seconds,minutes,hours。如果不指定unit,默认值为milliseconds。

      是否必填:否

      示例: 30 minutes。

 

属性:packingData

      说明:当有异常发生时,会在每一行错误信息的后面添加它所对应的jar包名称。因为有影响性能,一般不指定。

      值:true或者false。默认值为false。

      是否必填:否

子标签

  1. 1个root
  2. 0到多个logger
  3. 0到多个appender
  4. 1个contextName
  5. 0到多个include
  6. 0到多个property
  7. 0到1个ShutdownHook
  8. 0到多个statusListener。
  9. 0 到1个timestamp。
  10. 0到多个contextListener。
  11. 其他的一些语法,if,else,then。

3.2   root

表格2- 2 root标签

描述

定义root logger

属性

与logger的属性相同,没有additivity属性。

子标签

1到多个appender,默认指定consoleAppender。

注意事项

Root的级别不应该太低,否则日志信息会很多。导致垃圾的信息很多。

示例

<root level="error">

         <appender-ref ref="STDOUT" />

</root>

// STDOUT的全称为standard out。

3.3   logger

表格2- 3  logger标签

描述

配置logger标签。

属性

属性:name

      说明:logger的名称。

      值:包名称或者类全名。

      是否必填:是

 

属性:level

      说明:日志的级别。

      值:trace,debug,info,warn,error中的一个。

      是否必填:否,可以从父类继承。

 

属性:additivity

      说明:默认情况下子类的log事件会传递到它的父类中,如果子类有appender,父类也有appender,则会同时输出。导致日志信息重复。设置该属性为false,可以阻止这种行为。类似于页面中DOM的event冒泡。

      值:true或false,默认值为true。

      是否必填:否。

子标签

0到多个appender。如果没有时,会从父类继承。

示例

<!—父类appender -->

<logger name=”A” level=”debug”/>

<!—子类appender -->

<logger name=”A.B” level=”info” additivity=”false”/>

3.4  appender

         此处略。第四章节详细介绍。

3.5  contextName

表格2- 4  contextName标签

描述

为上下文命名,这个变量会传入ILoggingEvent,在配置日志格式时,可以获取该值并输出到终端。

注意事项

它的主要作用是当一个项目对应多个LoggerContext时,用于区分日志属于哪个LoggerContext,通常情况用不到,因为项目与loggerContext是一对一的关系。

示例

<contextName>logbackTest</contextName>,在日志中对应cn。

3.6   property

表格2- 5 property标签

描述

定义变量,加载properties属性文件。

属性

属性:name

      说明:属性名称,定义之后可以通过${name}使用变量。

      值:任何字符串。

      是否必填:否

 

属性:value

      说明:属性值。

      值:任何字符串。

      是否必填:当指定属性name时必填。

 

属性:scope

      说明:属性的作用域,local从配置文件开始到结尾,context在整个指定contextName的上下文中有效,system从虚拟机开始运行到结束运行。

      值:local,context,system中的一个,不指定默认为local。

      是否必填:否

 

属性:file,resource,url

      说明:与上面的属性不能同时指定,它代表加载一个属性文件。

当属性为file时表示从文件系统中加载,resource从classpath中加载,

url表示一个网络资源。Classpath最为常见。

      值:file时需要指定项目的相对路径,classpath时为编译的相对路径,url表示url链接。

      是否必填:否

子标签

注意事项

属性file与resource的区别。

示例

// 定义一个变量file_dir,表示日志文件的存放位置

<property  name=”file_dir”  value=”D:logs”>

// 加载resources/prop/logback.properties资源文件时

<property  file=”src/main/resources/prop/logback/properties”>

<property  resource=”prop/logback.properties”>

3.7  include

表格2- 6  include标签

描述

将logback.xml拆分为多个子配置文件。

属性

属性:file,url,resource

     说明:同property中的属性。

      值:子配置文件的路径。

      是否必填:否

示例

<!-- 定义appender -->

<include resource="config/logback-appender.xml"></include>

<!-- 定义logger -->

<include resource="config/logback-logger.xml"></include>

3.8  shutdownHook

表格2- 7 shutdownhook标签

描述

当所依赖的项目关闭之后,停止日志框架,并关闭它所有相关的资源。

Shutdownhook用于将日志框架的停用与项目的停用关联起来。

描述

当项目为独立的java项目时,此时需要它需要关联JVM的停用过程,需要手动配置。

当项目为Java-Web项目时,此时需要关联ServletContext对象,当该对象销毁时,日志框架停用,它是自动的,不需要手动配置。

示例

<shutdownhook/>

3.9   statusListener

表格2- 8 statusListener标签

描述

日志框架中的监听器,在core.status包下面。常见的有

OnConsoleStatusListener,打印日志框架的执行信息,与开启调试模式相同。

频率

较低

属性

属性:class

      说明:监听器的名称。

      值:类的全名,。

      是否必填:否

3.10  timestamp

定义时间变量,此处省略,在第四章节中介绍

3.11  contextListener

         略。

3.12  分支

因为使用频率非常低,此处省略。

本应该提供一份完整的配置文件,此处暂时省略,在学习完所有的章节之后提供。至此本篇内容结束,原著的链接为:http://logback.qos.ch/manual/configuration.html

原文地址:https://www.cnblogs.com/rain144576/p/12304514.html