Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker DevOps


Spring Boot 配置 logback 文件

Spring Boot logback 大约 3307 字

logback.xml

  • ${user.dir}/logs:日志输出在jar包同级目录下的logs文件夹中。
  • RollingFileAppender:按日压缩日志文件。
  • maxHistory:保留5天的压缩文件。
  • AsyncAppender:异步写文件。
  • queueSize:异步写文件线程池大小。
  • discardingThreshold:当队列大小小于0时丢弃TRACEDEBUGINFO级别日志,设置0等同于保留全部级别。
  • neverBlock:队列满了将直接返回,而不是挂起线程。

jar包方式部署

生产环境jar包部署时,一般都指定了> /dev/null 2>&1将输出流丢弃,故配置了console-appender在生产环境时都直接不输出了。而在测试环境则可以在控制台看到正常日志输出,便于观察。

若生产环境不指定> /dev/null 2>&1,将会输出到同级目录下得nohup.out文件中。

Spring Boot环境建议重命名为logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <property name="logPath" value="${user.dir}/logs"/>

    <appender name="FILE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${logPath}/log-info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${logPath}/history-log-%d{yyyy-MM-dd}.zip</FileNamePattern>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        <encoder>
            <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
        </encoder>
    </appender>

    <appender name="FILE_APPENDER_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>12000</queueSize>
        <neverBlock>true</neverBlock>
        <appender-ref ref ="FILE_APPENDER"/>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE_APPENDER_ASYNC"/>
    </root>

    <logger name="com.example" level="DEBUG"/>
</configuration>

war包方式部署

相比于jar包方式部署的配置,去除了defaults.xmlconsole-appender.xml以及<appender-ref ref="CONSOLE"/>,这样可以保证日志不在catalina.out中输出。

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

    <property name="logPath" value="${catalina.base}/logs"/>

    <appender name="FILE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${logPath}/log-info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${logPath}/history-log-%d{yyyy-MM-dd}.zip</FileNamePattern>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        <encoder>
            <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
        </encoder>
    </appender>

    <appender name="FILE_APPENDER_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>12000</queueSize>
        <neverBlock>true</neverBlock>
        <appender-ref ref ="FILE_APPENDER"/>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE_APPENDER_ASYNC"/>
    </root>

    <logger name="com.wostore" level="INFO"/>
</configuration>
阅读 1673 · 发布于 2020-12-09

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批