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

	<!-- 定义日志文件的存储地址 -->
	<!--
		关于catalina.base解释如下:
			catalina.home指向公用信息的位置,就是bin和lib的父目录。
			catalina.base指向每个Tomcat目录私有信息的位置,就是conf、logs、temp、webapps和work的父目录。
	-->
	<property name="LOG_DIR" value="${catalina.base}/logs"/>

	<!--
		%p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
		%r:输出自应用启动到输出该日志讯息所耗费的毫秒数
		%t:输出产生该日志事件的线程名
		%f:输出日志讯息所属的类别的类别名
		%c:输出日志讯息所属的类的全名
		%d:输出日志时间点的日期或时间,指定格式的方式: %d{yyyy-MM-dd HH:mm:ss}
		%l:输出日志事件的发生位置,即输出日志讯息的语句在他所在类别的第几行。
		%m:输出代码中指定的讯息,如log(message)中的message
		%n:输出一个换行符号
	-->
	<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
	<property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %X{uuid} [%thread] %-5level  %msg%n"/>


	<!--
		Appender: 设置日志信息的去向,常用的有以下几个
			ch.qos.logback.core.ConsoleAppender (控制台)
			ch.qos.logback.core.rolling.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新文件)
			ch.qos.logback.core.FileAppender (文件)
	-->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<!-- 字符串System.out(默认)或者System.err -->
		<target>System.out</target>
		<!-- 对记录事件进行格式化 -->
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>${pattern}</pattern>
		</encoder>
	</appender>

	<appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建 -->
		<file>${LOG_DIR}/file_info.log</file>
		<!-- 当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 必要节点,包含文件名及"%d"转换符,"%d"可以包含一个java.text.SimpleDateFormat指定的时间格式,默认格式是 yyyy-MM-dd -->
			<fileNamePattern>${LOG_DIR}/file_info_%d{yyyy-MM-dd}.log.%i.gz</fileNamePattern>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>200MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
			<!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个月滚动,如果是6,则只保存最近6个月的文件,删除之前的旧文件 -->
			<maxHistory>10</maxHistory>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>${pattern}</pattern>
		</encoder>
		<!-- LevelFilter: 级别过滤器,根据日志级别进行过滤 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<!-- 用于配置符合过滤条件的操作 ACCEPT:日志会被立即处理,不再经过剩余过滤器 -->
			<onMatch>ACCEPT</onMatch>
			<!-- 用于配置不符合过滤条件的操作 DENY:日志将立即被抛弃不再经过其他过滤器 -->
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>

	<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_DIR}/file_error.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_DIR}/file_error_%d{yyyy-MM-dd}.log.%i.gz</fileNamePattern>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>200MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
			<maxHistory>10</maxHistory>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>${pattern}</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>

	<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_DIR}/file_debug.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${LOG_DIR}/file_debug.%d{yyyy-MM-dd}.log
			</FileNamePattern>
		</rollingPolicy>
		<encoder>
			<Pattern>${pattern}</Pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>DEBUG</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>

	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<!-- 增加过滤器,控制日志级别-->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
		<encoder>
			<Pattern>${pattern}</Pattern>
		</encoder>


	<root level="INFO">
		<level>INFO</level>
		<!--<appender-ref ref="STDOUT"/>-->
		<appender-ref ref="FILE_INFO"/>
		<appender-ref ref="FILE_ERROR"/>
		<appender-ref ref="FILE_DEBUG"/>
		<appender-ref ref="console"/>
	</root>

</configuration>

配置参考:https://www.cnblogs.com/warking/p/5710303.html

posted on 2021-06-21 15:56  vow007  阅读(7)  评论(0编辑  收藏  举报  来源