https://logback.qos.ch/manual/index.html logback 官方文档
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 在此处定义可以使用 ${name} 在下文获取 value -->
<property name = "LOG_HOME" value="logs"/>
<property name="file" value="file"/>
<property name="infoFile" value="info"/>
<property name="errorFile" value="error"/>
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<layout class = "ch.qos.logback.classic.PatternLayout">
<pattern>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %logger{50}:日志路径显示50个字符,如果显示不完则简写 %msg:日志消息,%n是换行符-->
%d{HH:mm:ss.SSS} [%t] %-5level %logger{50} - %msg%n
</pattern>
</layout>
</appender>
<!-- 简单只是写入文件中 -->
<appender name="${file}" class="ch.qos.logback.core.FileAppender">
<file>
${LOG_HOME}/${file}.log
</file>
<encoder>
<!-- %-4relative 打印出程序运行到打印日志的毫秒数,-4:与[%thread] 的距离4个字符 -->
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照一定的规则滚动生成日志文件 -->
<appender name="${infoFile}" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 此处若加入file 则 fileNamePattern 无用 -->
<!--
<file>
${LOG_HOME}${infoFile}.log
</file>
-->
<!--
规则:根据文件的大小和时间共同控制
如下: 日志文件按日期记录,同一天内,若日志文件大小等于或大于5KB,则按0、1、2...顺序分别命名
有不同的规则可以选择:
TimeBasedRollingPolicy 只根据时间
SizeBasedTriggeringPolicy:只根据文件大小
...
每个规则的子节点不同:
maxFileSize:每个文件最大值
totalSizeCap:所有文件最大值
MaxHistory:最多保留多久的日志 如下是30天内
fileNamePattern:文件命名规则 %i从0开始自增,如果同一天的文件已经超出最大文件范围,则会生成第二个文件
/logs/info-2018-07-24-0.log
-->
<rollingPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${infoFile}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>5KB</maxFileSize>
<totalSizeCap>10MB</totalSizeCap>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<!--
分级过滤日志:LevelFilter
如下:接受info以上的,但是不写入error
<level>info</level>
<onMatch>ACCEPT</onMatch>
<level>error</level>
<onMatch>DENY</onMatch>
如下:只接受info
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="{errorFile}" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${errorFile}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>5KB</maxFileSize>
<totalSizeCap>10MB</totalSizeCap>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<Root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="${file}"/>
<appender-ref ref="${infoFile}"/>
<appender-ref ref="{errorFile}"/>
</Root>
</configuration>
网友评论