mark一下给自己:
-
日志输出到文件并根据LEVEL级别将日志分类保存到不同文件
# 配置文件logback-spring.xml
以及各个配置的详细描述,见备注
<springProfile name="dev">
<!--name属性指定appender命名-->
<!--class属性指定输出策略,通常有两种,控制台输出和文件输出,文件
输出就是将日志进行一个持久化。ConsoleAppender将日志输出到控
制台-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!--ThresholdFilter: 临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,
过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝-->
<level>DEBUG</level>
</filter>
<!-- <encoder>标签,使用该标签下的<pattern>标签指定日志输出格式-->
<encoder>
<pattern>%clr([%p] [%d] [%c.%M] %m%n)</pattern>
<charset>UTF-8</charset>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_INFO_HOME}//%d.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!--logback中RollingFileAppender用于滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。-->
<appender name="LOGOUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--获取比info级别高(包括info级别)但除error级别的日志
LevelFilter: 级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<!-- <encoder>标签,使用该标签下的<pattern>标签指定日志输出格式-->
<encoder>
<pattern>%clr([%p] [%d] [%c.%M] %m%n)</pattern>
<charset>UTF-8</charset>
</encoder>
<!--滚动策略 指定收集策略,比如基于时间进行收集TimeBaseRollingPolicy,还有一种就是基于索引来实现FixedWindowRollingPolicy-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--
通过rollingPolicy设置日志滚动的策略,这是使用按照时间滚动
fileNamePattern属性设置滚动生成文件的格式,这里设置的精确到天,也就是按照天滚动,如果时间设置精确到秒,就按秒来滚动
maxHistory属性设定最大的文件数,比如按天滚动,这里设置了30天,在第31天日志生成的时候,第一天的日志就会被删掉
-->
<fileNamePattern>${LOG_HOME}//%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
rollingPolicy对应是索引滚动策略的日志文件定义:
<!-- 设置为按照索引的方式滚动,定义文件名称的时候使用%i作为占位符,滚动后会会用角标替换
maxIndex不可设置为过大,过大后会自动被置为默认值12 -->
<!--<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>/logback/log/test-%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>--><!--
-->指定文件最大尺寸,达到该尺寸,就触发rollingPolicy对应的策略,maxFileSize属性指定文件大小
<!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>1MB</maxFileSize>
</triggeringPolicy>-->
</appender>
<!--用来指定最基础的日志输出级别-->
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="LOGOUT" />
</root>
</springProfile>
如何通过异步输出日志减少磁盘IO提高性能,可以使用logback 高级特性异步输出日志,因为我没有用到,但是可以学习一下