slf4j配置

发布时间 2023-09-04 22:19:42作者: 歆鱼
<?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>