logback--过滤器+补充


ok,这里先简单罗列下logback日志框架的好处,关于仔细的整理后面会专门写一篇博客的。

1,配置简单,易于上手
2,一个日志文件中只能某一个级别的日志
3,一个类中可以指定多个不同的日志,并且生成的每个日志文件中只包含其本身的内容
4,可以关闭或者打开某几个包的日志,并且可以设置不同的包使用不同的日志级别。

关于上面的第1点,第3点,第4点我前面博客里面都有整理到了。这里我们重点看下第2种情况:

日志级别及文件

考虑如下实际编码中经常遇见的场景:


日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中。例如:error级别记录到log_error_xxx.log或log_error.log(该文件为当前记录的日志文件),而log_error_xxx.log为归档日志,
日志文件按日期记录,同一天内,若日志文件大小等于或大于2M,则按0、1、2...顺序分别命名。例如log-level-2013-12-21.0.log。


OK,这里就要用到这篇博客讲的<filter>标签了。下面是具体代码和配置。

下面是一份配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<!-- debug:打印logback内部日志信息,实时查看logback的运行状态,默认为false -->
<!-- scan:配置文件如果发生改变,是否被重新加载,默认为true。 -->
<!-- scanPeriod:设置检测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒,默认的时间间隔为1分钟,默认为true。 -->
<configuration debug="true" scan="true" scanPeriod="30 seconds">
	<contextName>Application</contextName>
	<!-- 时间戳定义,timeReference:使用日志产生日期为时间基准 -->
	<timestamp key="byDay" datePattern="yyyy-MM-dd" timeReference="contextBirth" />

	<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径,可以使用系统变量 -->
	<!-- <property name="LOG_HOME" value="${app.home}/log" /> -->
	<property name="LOG_HOME" value="log" />

	<!-- 控制台输出,生产环境将请stdout去掉 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符 -->
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
			</pattern>
		</encoder>
	</appender>

	<!-- 按照每天生成日志文件 -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 日志输出文件 -->
		<file>${LOG_HOME}/LoggingBack-${byDay}.log</file>
		<!-- 追加日志到原文件结尾 -->
		<append>true</append>
		<!-- timebasedrollingpolicy:演示时间和大小为基础的日志文件归档 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定。 -->
			<!--可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 -->
			<!--而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
			<!-- 文件滚动日期格式:每天:.YYYY-MM-dd(默认);每星期:.YYYY-ww;每月:.YYYY-MM -->
			<!-- 每隔半天:.YYYY-MM-dd-a;每小时:.YYYY-MM-dd-HH;每分钟:.YYYY-MM-dd-HH-mm -->
			<fileNamePattern>${LOG_HOME}/log-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<!-- 控制归档文件的最大数量的保存,删除旧的文件,默认单位天数 -->
			<maxHistory>7</maxHistory>
			<!-- 设置当前日志的文件的大小,决定日志翻滚 -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
			</pattern>
		</encoder>
	</appender>
	
	<appender name="FILE-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 这里添加一个过滤器 -->
		<file>${LOG_HOME}/LoggingBack-info.log</file>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/LOG-INFO-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<maxHistory>7</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
			</pattern>
		</encoder>
	</appender>

	<appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 这里添加一个过滤器 -->
		<file>${LOG_HOME}/LoggingBack-error.log</file>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/LOG-ERROR-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<maxHistory>7</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
			</pattern>
		</encoder>
	</appender>

	<!-- 可以写多个日志文件appender,然后区分多个模块的日志 -->
	<appender name="LOGGINGBACK2" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/LoggingBack2.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/LOG-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<maxHistory>7</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
			</pattern>
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值