<?xml version="1.0" encoding="UTF-8" ?>
<!-- 级别从高到低 OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- 日志输出规则根据当前ROOT级别, 日志输出时, 级别高于root默认的级别时 会输出 -->
<!-- scan 当此属性设置为 true 时, 配置文件如果发生改变, 将会被重新加载, 默认值为 true。 -->
<!-- scanPeriod 设置监测配置文件是否有修改的时间间隔, 如果没有给出时间单位, 默认单位是毫秒。当 scan 为 true 时, 此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug 当此属性设置为 true 时, 将打印出 logback 内部日志信息, 实时查看 logback 运行状态。默认值为 false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 动态日志级别 -->
<jmxConfigurator/>
<!-- 日志记录级别 -->
<springProperty name="log.level" source="logging.level.root" defaultValue="INFO"/>
<!-- 应用名称 -->
<springProperty name="log.appName" source="spring.application.name" defaultValue="SpringBoot"/>
<!-- 日志文件home路径, 日志文件保存路径为${log.home}/${log.appName} -->
<springProperty name="log.homePath" source="logging.file.path" defaultValue="/tmp/app/${log.appName}/logs"/>
<!-- 日志文件保留天数, 默认30天 -->
<springProperty name="log.maxHistory" source="logging.file.max-size" defaultValue="30"/>
<!-- 日志文件大小, 默认15M -->
<springProperty name="log.maxSize" source="logging.file.max-history" defaultValue="15MB"/>
<!-- 打印sql语句 需要指定dao/mapper层包的位置 2.需修改-->
<!--<property name="mapper.package" value="com.*.**.dao"/>-->
<!-- 彩色日志 -->
<!-- 配置格式变量:CONSOLE_LOG_PATTERN 彩色日志格式 -->
<!-- magenta:洋红 -->
<!-- boldMagenta:粗红-->
<!-- cyan:青色 -->
<!-- white:白色 -->
<!-- magenta:洋红 -->
<property name="CONSOLE_LOG_PATTERN"
value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>
<springProfile name="dev, test">
<!-- ConsoleAppender 控制台输出日志 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
<!-- 设置日志输出格式 -->
${CONSOLE_LOG_PATTERN}
</pattern>
</encoder>
</appender>
<!-- TRACE级别日志 appender -->
<!-- 滚动记录文件, 先将日志记录到指定文件, 当符合某个条件时, 将日志记录到其他文件 RollingFileAppender -->
<!--<appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <!–<File>${log.homePath}/${log.appName}/trace/%d{yyyy-MM-dd}/${log.appName}-trace.log</File>–>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <!– 设置过滤级别 –>-->
<!-- <level>TRACE</level>-->
<!-- <!– 匹配就记录 –>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <!– 不匹配就过滤 –>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <!– 日志名称, 如果没有 <File> 属性, 那么只会使用 <FileNamePattern> 的文件路径规则-->
<!-- 如果同时有 <File> 和 <FileNamePattern>, 那么当天日志是 <File>, 明天会自动把今天-->
<!-- 的日志重命名为今天的日期。即 <File> 的日志都是当天的。–>-->
<!-- <!–日志输出位置 可相对、和绝对路径 –>-->
<!-- <fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/trace/${log.appName}-%i.log-->
<!-- </fileNamePattern>-->
<!-- <!– 只保留最近30天的日志 –>-->
<!-- <maxHistory>${log.maxHistory}</maxHistory>-->
<!-- <!– 日志文件最大的大小 –>-->
<!-- <MaxFileSize>${log.maxSize}</MaxFileSize>-->
<!-- </rollingPolicy>-->
<!-- <encoder>-->
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>-->
<!-- </encoder>-->
<!--</appender>-->
<!-- DEBUG级别日志 appender -->
<!--<appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>DEBUG</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/debug/${log.appName}-%i.log-->
<!-- </fileNamePattern>-->
<!-- <!– 只保留最近30天的日志 –>-->
<!-- <maxHistory>${log.maxHistory}</maxHistory>-->
<!-- <!– 日志文件最大的大小 –>-->
<!-- <MaxFileSize>${log.maxSize}</MaxFileSize>-->
<!-- </rollingPolicy>-->
<!-- <encoder>-->
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>-->
<!-- </encoder>-->
<!--</appender>-->
<!-- INFO级别日志 -->
<!-- 滚动记录文件, 先将日志记录到指定文件, 当符合某个条件时, 将日志记录到其他文件 RollingFileAppender -->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<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.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/info/${log.appName}-%i.log
</fileNamePattern>
<!-- 只保留最近30天的日志 -->
<maxHistory>${log.maxHistory}</maxHistory>
<!-- 日志文件最大的大小 -->
<MaxFileSize>${log.maxSize}</MaxFileSize>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
</encoder>
</appender>
</springProfile>
<!-- WARN级别日志 -->
<!-- 滚动记录文件, 先将日志记录到指定文件, 当符合某个条件时, 将日志记录到其他文件 RollingFileAppender -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤器, 只记录WARN级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 设置过滤级别 -->
<level>WARN</level>
<!-- 匹配就记录 -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配就过滤 -->
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志输出位置 可相对、和绝对路径 -->
<fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/warn/${log.appName}-%i.log</fileNamePattern>
<!-- 只保留最近30天的日志 -->
<maxHistory>${log.maxHistory}</maxHistory>
<!-- 日志文件最大的大小 -->
<MaxFileSize>${log.maxSize}</MaxFileSize>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- ERROR级别日志 -->
<!-- 滚动记录文件, 先将日志记录到指定文件, 当符合某个条件时, 将日志记录到其他文件 RollingFileAppender -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤器, 只记录 ERROR 级别的日志 -->
<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.SizeAndTimeBasedRollingPolicy">
<!-- 日志名称, 如果没有 <File> 属性, 那么只会使用 <FileNamePattern> 的文件路径规则
如果同时有 <File> 和 <FileNamePattern>, 那么当天日志是 <File>, 明天会自动把今天
的日志重命名为今天的日期。即 <File> 的日志都是当天的。-->
<!--日志输出位置 可相对、和绝对路径 -->
<fileNamePattern>
${log.homePath}/%d{yyyy-MM-dd}/error/${log.appName}-%i.log
</fileNamePattern>
<!-- 只保留最近30天的日志 -->
<maxHistory>${log.maxHistory}</maxHistory>
<!-- 日志文件最大的大小 -->
<MaxFileSize>${log.maxSize}</MaxFileSize>
</rollingPolicy>
<encoder>
<pattern>
<!-- 设置日志输出格式 -->
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</encoder>
</appender>
<!-- 所有日志都会记录-->
<appender name="APP" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ALL</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/app/${log.appName}-%i.log</fileNamePattern>
<maxHistory>${log.maxHistory}</maxHistory>
<MaxFileSize>${log.maxSize}</MaxFileSize>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
</encoder>
</appender>
<!--org.springframework.web包下的类的日志输出-->
<logger name="org.springframework.web" additivity="false">
<appender-ref ref="WARN"/>
<appender-ref ref="APP"/>
<appender-ref ref="ERROR"/>
</logger>
<!--dao层包下的类的日志输出-->
<!--<logger name="${mapper.package}" additivity="false" level="DEBUG">-->
<!-- <appender-ref ref="APP"/>-->
<!-- <appender-ref ref="ERROR"/>-->
<!-- <!–打印控制台–>-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!--</logger>-->
<springProfile name="dev, test">
<root>
<!-- 控制台输出 -->
<appender-ref ref="CONSOLE"/>
<!-- 需要自行解除注释, 也需要解除对应的appender -->
<!--<appender-ref ref="TRACE"/>-->
<!--<appender-ref ref="DEBUG"/>-->
<appender-ref ref="INFO"/>
</root>
</springProfile>
<!-- root级别 -->
<root level="${log.level}">
<appender-ref ref="WARN"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="APP"/>
</root>
</configuration>
SpringBoot自定义logback-spring.xml模板
于 2023-04-03 17:32:13 首次发布