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>
相关推荐
xrkhy几秒前
反射, 注解, 动态代理
java
Ten peaches12 分钟前
Selenium-Java版(操作元素)
java·selenium·测试工具·html
tan180°31 分钟前
Linux进程信号处理(26)
linux·c++·vscode·后端·信号处理
一只码代码的章鱼42 分钟前
Spring的 @Validate注解详细分析
前端·spring boot·算法
lyw20561944 分钟前
RabbitMQ,Kafka八股(自用笔记)
java
邹诗钰-电子信息工程1 小时前
嵌入式自学第二十一天(5.14)
java·开发语言·算法
有梦想的攻城狮1 小时前
spring中的@MapperScan注解详解
java·后端·spring·mapperscan
寒小松1 小时前
Problem E: List练习
java·数据结构·list
zimoyin1 小时前
Kotlin 协程实战:实现异步值加载委托,对值进行异步懒初始化
java·前端·kotlin
柚个朵朵2 小时前
Spring的Validation,这是一套基于注解的权限校验框架
java·后端·spring