spring boot 中logback多环境配置

spring boot 配置logback

spring boot自带了log打印功能,使用的是Commons logging 具体可以参考spring boot log
因此,我们只需要在resources中添加一个logback-spring.xml的logback的配置文件就可以实现正常的日志打印了。然而我们的目标是要实现多环境log配置,即本地输出到控制台,生产,测试输出到文件。
logback-spring.xml


<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <logger name="org.springframework.web" level="INFO" />

    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
        encoder>
    appender>

    <springProfile name="prod">
        
        <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                
                <FileNamePattern>/services/logs/spring-boot-example.%d{yyyy-MM-dd}.logFileNamePattern>
                
                <maxHistory>15maxHistory>
                <totalSizeCap>30GBtotalSizeCap>
            rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
            encoder>
            
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MBMaxFileSize>
            triggeringPolicy>
        appender>

        <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
            <discardingThreshold>0discardingThreshold>
            <queueSize>500queueSize>
            <appender-ref ref="FILE" />
        appender>
    springProfile>

    <springProfile name="dev">
        <root level="INFO">
            <appender-ref ref="consoleAppender" />
        root>
    springProfile>

    <springProfile name="junit">
        <root level="INFO">
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="asyncFileAppender" />
        root>
    springProfile>
    <springProfile name="test">
        <root level="INFO">
            <appender-ref ref="asyncFileAppender" />
        root>
    springProfile>
    <springProfile name="pro">
        <root level="INFO">
            <appender-ref ref="asyncFileAppender" />
        root>
    springProfile>

configuration>

application.yaml

spring:
  profiles:
    active: dev
---
server:
  port: 8001
spring:
  profiles: dev
  output:
    ansi:
      enabled: detect #配置输出console的ide中的配色,并没有什么用
---
server:
  port: 8009
spring:
  profiles: test
---
server:
  port: 8008
spring:
  profiles: prod

注意在logback-spring.xml的配置中,如果不把

你可能感兴趣的:(java,spring-boot)