<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <property name="logDir" value="./logs"/>

  <!-- 控制台 appender -->
  <appender class="ch.qos.logback.core.ConsoleAppender"
    name="STDOUT">
    <encoder>
      <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] [%logger{50}] : %msg%n</pattern>
    </encoder>
  </appender>

  <!-- 按照每天生成日志文件 -->
  <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
    name="info-file">
    <rollingPolicy
      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!--日志文件输出的文件名 -->
      <FileNamePattern>${logDir}/camera-info-%d{yyyy-MM-dd}.log</FileNamePattern>
      <!--日志文件保留天数 -->
      <MaxHistory>30</MaxHistory>
    </rollingPolicy>
    <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>
    <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日志 -->
      <level>INFO</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <!--日志文件最大的大小 -->
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
  </appender>

  <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
    name="debug-file">
    <rollingPolicy
      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!--日志文件输出的文件名 -->
      <FileNamePattern>${logDir}/camera-debug-%d{yyyy-MM-dd}.log</FileNamePattern>
      <!--日志文件保留天数 -->
      <MaxHistory>30</MaxHistory>
    </rollingPolicy>
    <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>
    <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日志 -->
      <level>DEBUG</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <!--日志文件最大的大小 -->
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
  </appender>

  <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
    name="error-file">
    <rollingPolicy
      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!--日志文件输出的文件名 -->
      <FileNamePattern>${logDir}/camera-error-%d{yyyy-MM-dd}.log</FileNamePattern>
      <!--日志文件保留天数 -->
      <MaxHistory>30</MaxHistory>
    </rollingPolicy>
    <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>
    <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日志 -->
      <level>ERROR</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <!--日志文件最大的大小 -->
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
  </appender>

  <logger level="debug" name="com.junction"/>

  <root level="info">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="info-file"/>
    <appender-ref ref="debug-file"/>
    <appender-ref ref="error-file"/>
  </root>
</configuration>
