Spring-Boot"原生态"的logback

前言

Logback是由 log4j创始人设计的又一个开源日志组件;

logback当前分成三个模块:

	logback-core

	logbackclassic

	logback-access

logback-core是其它两个模块的基础模块

如果在你的pom.xml中,依赖了 spring-boot-starter-web ,就可以不用再添加日志组件的依赖。

application.properties 中加入

#########logback##########
logging.config=classpath:logback-boot.xml

logback-boot.xml配置解说

默认的是 logback.xml ,如果要扩展的话,必须是logback-xxx.xml

<configuration>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder charset="UTF-8">
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %5p %m%n</pattern>
		</encoder>
	</appender>

	<!-- 出错日志 appender  -->
	<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>./logs/error/LinkManagerAPP_error_console.log</file>
		<append>true</append>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 按天回滚 daily -->
			<fileNamePattern>./logs/error/LinkManagerAPP_%d{yyyy-MM-dd_HH}_ERROR</fileNamePattern>
			<!-- 日志最大的历史 2天 -->
			<maxHistory>7</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
			<charset class="java.nio.charset.Charset">UTF-8</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<!-- 过滤掉非ERROR级别,只打印ERROR日志 -->
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
	</appender>

	<!-- info日志 appender  -->
	<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>./logs/info/LinkManagerAPP_info_console.log</file>
		<append>true</append>
		<!-- 按天回滚 daily -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>./logs/info/LinkManagerAPP_%d{yyyy-MM-dd_HH}_INFO</fileNamePattern>
			<!-- 日志最大的历史 2 -->
			<maxHistory>7</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
			<charset class="java.nio.charset.Charset">UTF-8</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<!-- 过滤掉非INFO级别,只打印INFO日志 -->
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>	
	</appender>

	<root  level="DEBUG">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="INFO" />
		<appender-ref ref="ERROR" />
	</root>
</configuration> 

详解:

<pattern> :
    %d{yyyy-MM-dd HH:mm:ss.SSS}——日志输出时间  
    %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用  
    %-5level——日志级别,并且使用5个字符靠左对齐  
    %logger{36}——日志输出者的名字  
    %msg——日志消息  
    %n——平台的换行符  

<appender> :
	appender是configuration的子节点,是负责写日志的组件

<file> :
    被写入的文件名,可以是相对目录 , 也可以是绝对目录 , 如果目录不存在则会自动创建

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

<rollingPolicy> :
    当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名

<fileNamePattern> :
    活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次

<maxHistory> :
    每产生一个日志文件,该日志文件的保存期限

ConsoleAppender类 :
    把日志输出到控制台

RollingFileAppender类 :
    滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件

TimeBasedRollingPolicy类 :
    最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动

LevelFilter类 :
	根据记录级别对记录事件进行过滤。
	如果事件的级别等于配置的级别,过滤器会根据 onMatch 和 onMismatch 属性接受或拒绝事件

ThresholdFilter类 :
	过滤掉低于指定临界值的事件。
	当记录的级别等于或高于临界值时 , ThresholdFilter 的decide()方法会返回NEUTRAL;
	当记录级别低于临界值时 , 事件会被拒绝

想了解具体内容,可参考:

logback节点配置详解

posted @ 2018-08-23 16:06  lijinshan2018  阅读(233)  评论(0编辑  收藏  举报