<?xml version="1.0" encoding="UTF-8"?>
<!--
configuration作为logback的根节点有以下属性
scan: 默认为true, 配置文件发生变化, 将会被重新加载
scanPeriod: 检测配置文件是否有修改的间隔时间,默认1分钟
debug: 默认为false, true时会打印logback内部日志信息
packagingData: 默认为false, true时, logback可以包含它输出的堆栈跟踪行的每一行的打包数据。打包数据由jar文件的名称和版本组成,而这个jar文件是由堆栈跟踪线的类产生的
-->
<configuration debug="false">
<!--指定某开发环境下日志文件的存储路径-->
<springProfile name="prod">
<property name="LOG_HOME" value="/www/wwwroot/yxxapi.fenxiangzl.com/log/"/>
</springProfile>
<springProfile name="dev">
<property name="LOG_HOME" value="s/tianhen/Desktop/yxx_applet_java/log/"/>
</springProfile>
<!--控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--只记录INFO级别的日志-->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--追加
值为 true:表示日志框架将在现有日志文件的末尾追加新的日志消息,
为 false,则会在每次日志记录时都创建一个新的日志文件,覆盖以前的日志文件。
-->
<append>true</append>
<!--过滤器,只记录INFO级别的日志-->
<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.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}%d{yyyy-MM-dd}-info.log</fileNamePattern>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--只记录WARN级别的日志-->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--追加-->
<append>true</append>
<!--过滤器,只记录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.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}%d{yyyy-MM-dd}-warn.log</fileNamePattern>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--过滤器,只记录ERROR级别的日志-->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--追加-->
<append>true</append>
<!--过滤器,只记录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.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}%d{yyyy-MM-dd}-error.log</fileNamePattern>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<!--指定日志消息编码方式-->
<encoder charset="UTF-8">
<!--日志消息的输出格式:
[%d{yyyy-MM-dd HH:mm:ss.SSS}]: 这部分是日期和时间戳的占位符,%d{yyyy-MM-dd HH:mm:ss.SSS} 表示以指定的日期时间格式(年-月-日 时:分:秒.毫秒)显示日志消息的时间戳。
%level: 这个占位符将显示日志事件的级别,例如 INFO、DEBUG、ERROR 等。
[%thread]: 这个占位符将显示产生日志消息的线程名称。
%file:%line: 这个占位符将显示产生日志消息的源文件名称和行号。
%msg: 这个占位符将显示实际的日志消息内容。
%n: 这是一个特殊的占位符,表示换行符,用于分隔不同的日志消息。
-->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--不同环境下输出的日志类别-->
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="INFO"/>
<appender-ref ref="WARN"/>
<appender-ref ref="ERROR"/>
</root>
</springProfile>
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="INFO"/>
<appender-ref ref="WARN"/>
<appender-ref ref="ERROR"/>
</root>
</springProfile>
</configuration>