logback.xml记录

220 阅读1分钟
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${catalina.base}/logs" />

<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <!--<withJansi>true</withJansi>-->
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
        <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %highlight([%-5level] %logger{50} - %msg%n)</pattern>
        <charset>UTF-8</charset>
    </encoder>
</appender>

<!-- 系统错误日志文件 -->
<appender name="SYSTEM_FILE"  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">
        <!--日志文件输出的文件名-->
        <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.system_error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
        <!--日志文件保留天数-->
        <MaxHistory>15</MaxHistory>
        <!--日志文件最大的大小-->
        <MaxFileSize>10MB</MaxFileSize>
    </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>
        <charset>UTF-8</charset>
    </encoder>
</appender>
<logger name="system_error" additivity="true">
    <appender-ref ref="SYSTEM_FILE"/>
</logger>

<!-- 自己打印的日志文件,用于记录重要日志信息 -->
<appender name="MY_INFO_FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 过滤器,只打印ERROR级别的日志 -->
    <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_HOME}/${PROJECT_NAME}.my_info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
        <!--日志文件保留天数-->
        <MaxHistory>15</MaxHistory>
        <!--日志文件最大的大小-->
        <MaxFileSize>10MB</MaxFileSize>
    </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>
        <charset>UTF-8</charset>
    </encoder>
</appender>
<logger name="my_info" additivity="true">
    <appender-ref ref="MY_INFO_FILE"/>
</logger>

<!-- 开发环境下的日志配置 -->
<springProfile name="dev">
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="SYSTEM_FILE" />
    </root>
</springProfile>

<!-- 生产环境下的日志配置 -->
<springProfile name="prod">
    <root level="INFO">
        <appender-ref ref="SYSTEM_FILE" />
    </root>
</springProfile>