第三章节介绍日志框架的配置,分为两个部分,”auto”配置项(默认配置),配置文件。
本章的内容比较简单,因为必填的配置项只有三个,logger,root,appender。其中appender的配置稍微复杂一些,logger和root都比较简单。
默认配置部分的内容如下:
- 查找配置文件的步骤。
- 默认的配置项。
配置文件的内容如下:
- Configuration标签的各个属性的含义
- 手动配置的每一个标签项,它们都是Configuration标签的子标签。
1、查找配置文件步骤
查找配置文件的步骤如下:
- 首先在classpath路径下查找logback-test.xml,文件不存在进入第二步
- 其次查找logback.groovy,文件不存在进入第三步
- 之后查找logback.xml,文件不存在进入第四步
- 之后查找ch.qos.logback.classic.spi.Configurator同包下的实现类,不存在进入第五步
- 使用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。 是否必填:否 |
子标签 |
|
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