SpringBoot 项目配置日志输出

springboot 项目的 spring-boot-starter-web 依赖默认使用的是 logback 作为日志框架,所以如果我们就想使用 logback 的话, 就无需额外引入依赖了。

具体配置如下:

application.yml

yml 复制代码
logging:
  pattern:
    dateformat: yyyy-MM-dd HH:mm:ss.SSS
  level:
    root: info
    com.yxai: debug

application-dev.yml 和 application-prod.yml :

yml 复制代码
logging:
  file:
    path: /var/log/tylerzhong/backend # 指定日志输出路径,方便后续的日志采集

我这里 local 环境本地启动需想要将日志输出到文件中,只需要输出到控制台即可,所以 application-local.yml 不用配置上面的代码。

logback-spring.xml :

bash 复制代码
<configuration debug="true">

    <!-- 引用Spring Boot全局配置文件中的日期格式配置项 -->
    <springProperty scope="context" name="dateformat" source="logging.pattern.dateformat" defaultValue="yyyy-MM-dd HH:mm:ss.SSS"/>
    <springProperty scope="context" name="APP_NAME"  source="spring.application.name"/>
    <springProperty scope="context" name="LOG_FILE"  source="logging.file.path"/>
    <!-- 定义颜色编码 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>

    <!-- 定义日志输出到控制台的appender -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%clr(%d{${dateformat}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([%15.15t]){faint} [%-40.40logger{39}] %clr(%msg%n){faint}%wEx</pattern>
        </encoder>
    </appender>

    <!-- 开发环境配置 -->
    <springProfile name="local">
        <root level="DEBUG">
            <appender-ref ref="STDOUT" />
        </root>

        <!-- 开发环境专属的详细日志 -->
        <logger name="com.tylerzhong" level="TRACE" additivity="false">
            <appender-ref ref="STDOUT" />
        </logger>
    </springProfile>

    <springProfile name="!local">
        <!-- 文件日志:输出全部日志到文件 -->
        <appender name="FILE_INFO_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_FILE}/${APP_NAME}.log</file>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>ACCEPT</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_FILE}/${APP_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxHistory>180</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>50MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{${dateformat}} [%thread] %-5level %logger{36} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>

        <!-- 错误日志:用于将错误日志输出到独立文件 -->
        <appender name="FILE_ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_FILE}/error-${APP_NAME}.log</file>
            <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_FILE}/error-${APP_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxHistory>180</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>50MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{${dateformat}} [%thread] %-5level %logger{36} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>

        <root level="INFO">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE_INFO_LOG" />
            <appender-ref ref="FILE_ERROR_LOG" />
        </root>

    </springProfile>

</configuration>
相关推荐
小妖怪的夏天1 天前
react native android设置邮箱,进行邮件发送
android·spring boot·react native
Chandler241 天前
一图掌握 操作系统 核心要点
linux·windows·后端·系统
屏风走马1 天前
SpringSecurity的简单想法
java
Y1_again_0_again1 天前
Java中第三方日志库-Log4J
java·开发语言·log4j
我是华为OD~HR~栗栗呀1 天前
24届-Python面经(华为OD)
java·前端·c++·python·华为od·华为·面试
Tony_yitao1 天前
符号运算(华为OD)
java·算法·华为od
柳贯一(逆流河版)1 天前
Nacos 实战指南:微服务下服务注册与配置管理的完整落地
java·微服务·架构
一叶飘零_sweeeet1 天前
从轮询到实时推送:将站内消息接口改造为 WebSocket 服务
java·websocket
周末程序猿1 天前
技术总结|十分钟了解性能优化PGO
后端
yinke小琪1 天前
从秒杀系统崩溃到支撑千万流量:我的Redis分布式锁踩坑实录
java·redis·后端