logback appender详解

logback中appender是负责写日志的组件,主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、MySQL和其他数据库、JMS和远程UNIX Syslog守护进程等。

类型

ConsoleAppender: 把日志打印到控制台

FileAppender: 把日志输出到文件

RollingFileAppender: 滚动记录地把日志输出到文件, 也就是可以支持日志文件按文件大小拆分,或者按日期拆分

例子

<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<!-- 文件路径 -->
	<file>${log.filePath}/info.log</file>
	<!-- 滚动策略 -->
	<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
		<!-- 设置文件名称 -->
		<fileNamePattern>
			${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz
		</fileNamePattern>
		<!-- 设置最大保存周期 -->
		<MaxHistory>${log.maxHistory}</MaxHistory>
	</rollingPolicy>
	<encoder>
		<pattern>${log.pattern}</pattern>
	</encoder>
	<!-- 过滤器,过滤掉不是指定日志水平的日志 -->
	<filter class="ch.qos.logback.classic.filter.LevelFilter">
		<!-- 设置日志级别 -->
		<level>INFO</level>
		<!-- 如果跟该日志水平相匹配,则接受 -->
		<onMatch>ACCEPT</onMatch>
		<!-- 如果跟该日志水平不匹配,则过滤掉 -->
		<onMismatch>DENY</onMismatch>
	</filter>
</appender>

子节点

1. filter过滤器

LevelFilter: 级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。

ThresholdFilter: 临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。

EvaluatorFilter: 求值过滤器,评估、鉴别日志是否符合指定条件。

2. rollingPolicy

用来设置日志的滚动策略,当达到条件后会自动将条件前的日志生成一个备份日志文件,条件后的日志输出到最新的日志文件中。常用的是按照时间来滚动(使用的类TimeBaseRollingPolicy),还有一种就是基于索引来实现(使用的类FixedWindowRollingPolicy)。

fileNamePattern属性设置滚动生成文件的格式,这里设置的精确到天,也就是按照天滚动,如果时间设置精确到秒,就按秒来滚动

maxHistory属性设定最大的文件数,比如按天滚动,这里设置了30天,在第31天日志生成的时候,第一天的日志就会被删掉

3. triggeringPolicy

日志触发器策略,常用的是日志的大小的控制,当日志达到对应的大小的时候,就会触发。生成新的日志文件。日志大小的控制配合rollingPlicy使用的时候,不同的rollingPolicy会有所不同。

4. encoder

负责把事件转换成字节数组并把字节数组写到合适的输出流。encoder可以指定属性值class,这里对应的类只有一个PatternLayoutEncoder,也是默认值,可以不去指定。




版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。