Logback.xml配置学习总结
目录:
相关概念
- Logger:
- 日志的记录器
- 关联到应用的对应的context
- 用于存放日志对象
- 也可以定义日志类型、级别
- appender
- 指定日志输出的目的地
- 控制台
- 文件
- 远程套接字服务器
- MySQL、PostreSQL、 Oracle和其他数据库
- JMS和远程UNIX Syslog守护进程等
- 指定日志输出的目的地
- layout
负责把事件转换成字符串,格式化的日志信息的输出
配置文件详解
整体结构图

configuration
属性
| 属性名 | 默认值 | 作用 |
|---|---|---|
| scan | true | 设置问true时候,将会被重新加载 |
| scanPeriod | 60 seconds | 轮询监控配置文件是否被修改的时间间隔,只有scan为true的时候,才会生效 |
| debug | false | 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态 |
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
</configuration>
子节点
| 元素名 | 作用 |
|---|---|
| contextName | 用来设置上下文名称,每个logger都关联到logger上下文,默认上下文名称为default。但可以使用设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。 |
| property | 用来定义变量值,它有两个属性name和value,通过定义的值会被插入到logger上下文中,可以使“${}”来使用变量。 |
| timestamp | 获取时间戳字符串,他有两个属性key和datePattern,key: 标识此 的名字,datePattern: 设置将当前时间(解析配置文件的时间)转换为字符串的模式,遵循java.txt.SimpleDateFormat的格式。 |
| appender | 负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名 |
| logger | 用来设置某一个包或具体的某一个类的日志打印级别、以及指定。仅有一个name属性,一个可选的level和一个可选的addtivity属性。可以包含零个或多个元素,标识这个appender将会添加到这个logger,name: 用来指定受此logger约束的某一个包或者具体的某一个类。level: 用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。 如果未设置此属性,那么当前loger将会继承上级的级别。addtivity: 是否向上级loger传递打印信息。默认是true。同一样,可以包含零个或多个元素,标识这个appender将会添加到这个loger。 |
| root | 同logger |
-
contextName For Example:
<? xml version="1.0" encoding="UTF-8" ?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <contextName>appid</contextName> </configuration> -
property For Example:
<configuration scan="true" scanPeriod="60 seconds" debug="false"> <property name="APP_Name" value="myAppName" /> <contextName>${APP_Name}</contextName> <!--其他配置省略--> </configuration> -
timestamp For Example:
configuration scan="true" scanPeriod="60 seconds" debug="false"> <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/> <contextName>${bySecond}</contextName> <!-- 其他配置省略--> </configuration> -
appender 独立拿出来说
-
logger
-
属性
- name: 用来指定受此loger约束的某一个包或者具体的某一个类
- level: 用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。 如果未设置此属性,那么当前loger将会继承上级的级别。
-
For Example
<!-- show parameters for hibernate sql 专为 Hibernate 定制 --> <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" /> <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" /> <logger name="org.hibernate.SQL" level="DEBUG" /> <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" /> <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" /> <!--myibatis log configure--> <logger name="com.apache.ibatis" level="TRACE"/> <logger name="java.sql.Connection" level="DEBUG"/> <logger name="java.sql.Statement" level="DEBUG"/> <logger name="java.sql.PreparedStatement" level="DEBUG"/>
-
-
root 同logger
-
For Example
<root level="debug"> <appender-ref ref="DEBUG" /> </root>
-
注意: 我这里是这么理解logger,root标签,配置对应 level环境 比如说 debug 需要输出到console和日志文件里面,线上的时候,只需要输出到日志文件里面
appender
属性
- name指定appender名称
- class指定appender的全限定名
appender种类
| 类名 | 作用 |
|---|---|
| ConsoleAppender | 把日志输出到控制台 |
| FileAppender | 把日志添加到文件 |
| RollingFileAppender | 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 |
| SocketAppender | 待求证 |
| SMTPAppender | 待求证 |
| DBAppender | 待求证 |
| SyslogAppender | 待求证 |
| SiftingAppender | 待求证 |
| 自定义 | 待求证 |
注意: http://logback.qos.ch/documentation.html
ConsoleAppender
-
子元素
元素名 默认值 作用 encoder 对日志进行格式化。(具体参数稍后讲解 ) target System.out 字符串System.out(默认)或者System.err(区别不多说了) -
for Example
<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern> </encoder> </appender> </configuration>
FileAppender
-
子元素
元素名 默认值 作用 file 没有默认值 被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建 append true 为true日志被追加到文件结尾,如果是 false,清空现存文件 encoder 对记录事件进行格式化(单独拿出来说) prudent false 为true日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低 -
For Example
<? xml version="1.0" encoding="UTF-8" ?> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <file>demo.log</file> <append>true</append> <encoder>%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)</encoder> <prudent>false</prudent> </appender> </configuration>
RollingFileAppender
-
子元素
元素名 默认值 作用 file 没有默认值 被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建 append true true,日志被追加到文件结尾,如果是 false,清空现存文件 rollingPolicy 当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类 -
For Example
<configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="FILE" /> </root> </configuration>
rollingPolicy
-
TimeBasedRollingPolicy:最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。
元素 作用 fileNamePattern 必要节点,包含文件名及“%d”转换符,“%d”可以包含一个java.text.SimpleDateFormat指定的时间格式,如:%d{yyyy-MM}。如果直接使用 %d,默认格式是 yyyy-MM-dd。RollingFileAppender的file字节点可有可无,通过设置file,可以为活动文件和归档文件指定不同位置,当前日志总是记录到file指定的文件(活动文件),活动文件的名字不会改变;如果没设置file,活动文件的名字会根据fileNamePattern 的值,每隔一段时间改变一次。“/”或者“\”会被当做目录分隔符。 maxHistory 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个月滚动,且maxHistory是6,则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
备注:上述配置表示每天生成一个日志文件,保存30天的日志文件。 一天一份 报错30份,所以就是30天
-
SizeBasedTriggeringPolicy: 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动
元素 作用 maxFileSize 这是活动文件的大小,默认值是10MB。 prudent 当为true时,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有两个限制,1不支持也不允许文件压缩,2不能设置file属性,必须留空。 -
FixedWindowRollingPolicy: 根据固定窗口算法重命名文件的滚动策略
疑问: 窗口大小的依据是什么,是类似 tcp里面的窗口?元素 作用 minIndex 窗口索引最小值 maxIndex 窗口索引最大值,当用户指定的窗口过大时,会自动将窗口设置为12。 fileNamePattern 必须包含“%i”例如,假设最小值和最大值分别为1和2,命名模式为 mylog%i.log,会产生归档文件mylog1.log和mylog2.log。还可以指定文件压缩选项,例如,mylog%i.log.gz 或者 没有 -
triggeringPolicy :告知 RollingFileAppender 合适激活滚动。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>test.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>tests.%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
本文详细介绍了Logback.xml配置文件的结构与使用方法,包括相关概念、配置详解及各类appender的应用,如ConsoleAppender、FileAppender和RollingFileAppender,帮助读者深入理解日志管理。
2万+

被折叠的 条评论
为什么被折叠?



