logback文件配置介绍

logback文件的内容主要分为3个部分,分别是<appender> <logger> <root>

1.appender

appender是负责写日志的组件。appender有两个必要属性nameclassname指定appender名称,class指定appender的全限定名。

ConsoleAppender

负责把日志添加到控制台,包括如下子节点:
encoder:格式化。

target:字符串 System.out 或者 System.err ,默认 System.out ;

示例:

xml 复制代码
<configuration>  
  
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
    <encoder>  
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>  
    </encoder>  
  </appender>  
  
  <root level="DEBUG">  
    <appender-ref ref="STDOUT" />  
  </root>  
</configuration>

FileAppender

把日志添加到文件,包括如下子节点:
file:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。

append:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。

encode:对记录事件进行格式化。(具体参数稍后讲解 )

prudent:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。

示例:

xml 复制代码
<configuration>  
  
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">  
    <file>testFile.log</file>  
    <append>true</append>  
    <encoder>  
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>  
    </encoder>  
  </appender>  
          
  <root level="DEBUG">  
    <appender-ref ref="FILE" />  
  </root>  
</configuration>

RollingFileAppender

滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。包括如下子节点:
file被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。

append:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。

encoder:格式化。

rollingPolicy:滚动策略,当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。
TimeBasedRollingPolicy:最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。有以下子节点:
fileNamePattern:必要节点,滚动文件的保存位置和格式,包含文件名及"%d"转换符, "%d"可以包含一个Java.text.SimpleDateFormat指定的时间格式。如果直接使用 %d,默认格式是 yyyy-MM-dd。此时可以通过设置file,可以为活动文件和归档文件指定不同位置,当前日志总是记录到file指定的文件(活动文件),活动文件的名字不会改变;如果没设置file节点,活动文件的名字会根据fileNamePattern 的值,每隔一段时间改变一次。"/"或者"\"会被当做目录分隔符。
maxHistory:可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。

FixedWindowRollingPolicy:根据固定窗口算法重命名文件的滚动策略。有以下子节点:
minIndex:窗口索引最小值
maxIndex:窗口索引最大值,当用户指定的窗口过大时,会自动将窗口设置为12。
fileNamePattern:同上

triggeringPolicy: 告知 RollingFileAppender 合适激活滚动。
SizeBasedTriggeringPolicy:查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动。只有一个节点:
maxFileSize:这是活动文件的大小,默认值是10MB。

prudent:当为true时,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有两个限制,1不支持也不允许文件压缩,2不能设置file属性,必须留空。

示例:

xml 复制代码
<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> 
	
	<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">   
      <maxFileSize>5MB</maxFileSize>   
    </triggeringPolicy>    
   
    <encoder>   
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>   
    </encoder>   
  </appender>    
   
  <root level="DEBUG">   
    <appender-ref ref="FILE" />   
  </root>   
</configuration>

encoder

负责把日志信息转换成字节数组,以及把字节数组写入到输出流。

有一个pattern节点,用来设置日志的输入格式。使用"%"加"转换符"方式,如果要输出"%",则必须用"\"对"%"进行转义。

2.logger

用来设置某一个包或者具体的某一个类的日志打印级别、以及指定appenderlogger仅有一个name属性,一个可选的level和一个可选的addtivity属性。
name:用来指定受此logger约束的某一个包或者具体的某一个类。

level:用来设置打印级别(日志级别),大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级(一般是root)的级别。

addtivity:是否向上级loger传递打印信息。默认是true。

appender-ref:logger可以包含零个或多个appender-ref元素,标识这个appender将会添加到这个logger用以执行日志操作。

3.root

也是一种logger元素,但是它是根logger。只有一个level属性,应为已经被命名为"root"

4.configuration根节点

scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。

scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。

debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

示例:

xml 复制代码
<configuration scan="true" scanPeriod="60 seconds" debug="false">  
      <!-- ............ -->  
</configuration>

5.不常用节点

contextName:使用contextNamelogger设置成其他名字,用于区分不同应用程序的记录。默认上下文名称为"default"。

property:用来定义变量值的标签,property有两个属性,namevalue;其中name的值是变量的名称,value的值时变量定义的值。通过property定义的值会被插入到logger上下文中。定义变量后,可以使"${}"来使用变量。

timestamp:获取时间戳字符串。两个属性 key标识此timestamp的名字;datePattern:设置将当前时间(解析配置文件的时间)转换为字符串的模式,遵循java.txt.SimpleDateFormat的格式。

示例:

xml 复制代码
 <configuration scan="true" scanPeriod="60 seconds" debug="false">  
      <timestamp key="Second" datePattern="yyyyMMdd'T'HHmmss"/> 
      <property name="Test" value="test" />     
      <contextName>${Second}</contextName>  
      <!-- ............ -->  
</configuration>
相关推荐
bing_1588 分钟前
在 Spring Boot 项目中,如何进行高效的数据库 Schema 设计?
数据库·spring boot·后端·数据库schema设计
匹马夕阳14 分钟前
java开发中的设计模式之工厂模式
java·设计模式
Pasregret15 分钟前
设计模式入门:从 GoF 分类到 SOLID 原则实战
java·设计模式
听雪楼主.25 分钟前
Oracle补丁安装工具opatch更新报错处理
数据库·oracle
不吃元西25 分钟前
对于客户端数据存储方案——SQLite的思考
数据库·sqlite
rgb0f027 分钟前
MySQL视图相关
数据库·mysql·oracle
编程、小哥哥31 分钟前
oracle值sql记录
数据库·sql·oracle
三千花灯37 分钟前
jmeter提取返回值到文件
数据库·jmeter
ZStack开发者社区44 分钟前
ZStack文档DevOps平台建设实践
java·大数据·开发语言·devops
萧离1951 小时前
超细的Linux安装minio教学
数据库