spring boot 中logback多環境配置


spring boot 配置logback

spring boot自帶了log打印功能,使用的是Commons logging 具體可以參考spring boot log 
因此,我們只需要在resources中添加一個logback-spring.xml的logback的配置文件就可以實現正常的日志打印了。然而我們的目標是要實現多環境log配置,即本地輸出到控制台,生產,測試輸出到文件。 
logback-spring.xml

?xml version="1.0" encoding="UTF-8"?>
<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">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <springProfile name="prod">
        <!-- 注意這里一定要放到springProfile里, 否則在你本機執行的時候還是會去找相應的文件 -->
        <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}.log</FileNamePattern>
                <!--日志文件保留天數-->
                <maxHistory>15</maxHistory>
                <totalSizeCap>30GB</totalSizeCap>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            </encoder>
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MB</MaxFileSize>
            </triggeringPolicy>
        </appender>

        <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
            <discardingThreshold>0</discardingThreshold>
            <queueSize>500</queueSize>
            <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的配置中,如果不把<appender name="FILE></append>放到<springPofile></springPofile>中,就算你只是輸出到console, 還是會去創建FILE中設置的log文件

當然日志還是在控制台輸出,並不會寫到log文件中。這個問題並不僅僅出現在spring boot 中,是logback本身的問題,就算不用spring也會出現這種問題

轉載:http://blog.csdn.net/m0_37895333/article/details/72457007


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM