天天看點

springboot多環境配置logback

springboot多環境配置logback

    • 1. 建立springboot項目
    • 2. 引入相關依賴
    • 3. 在springboot的yml檔案中對logging進行配置
    • 4. logback-spring.xml

1. 建立springboot項目

直接使用idea建立或者官網下載下傳包導入這裡就不做過多贅述。

2. 引入相關依賴

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    compile 'mysql:mysql-connector-java:6.0.6'
    compile "org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1"
    compile 'org.mybatis.generator:mybatis-generator-core:1.3.2'
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
           

Spring Boot 內建logback需要添加spring-boot-starter-logging依賴,而此依賴已經在spring-boot-starter中添加過了,是以不用再添加此依賴了(如下圖)

springboot多環境配置logback

3. 在springboot的yml檔案中對logging進行配置

application-dev.yml:

logging:
  path: D:\\log\\dev
  config: classpath:logback-spring.xml
  level:
    root: debug
           

application-test.yml:

logging:
  path: D:\\log\\test
  config: classpath:logback-spring.xml
  level:
    root: info
           

4. logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--定義日志檔案的存儲位址 從springboot配置檔案中擷取路徑-->
    <springProperty scope="context" name="LOG_PATH" source="logging.path"/>
     <!--springboot配置檔案中擷取日志級别-->
    <springProperty scope="context" name="LOG_LEVEL" source="logging.level.root"/>
    <property name="LOG_NAME" value="main"/>

    <!--引入預設的一些設定-->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!--web資訊-->
    <logger name="org.springframework.web" level="info"/>

    <!--寫入日志到控制台的appender,用預設的,但是要去掉charset,否則windows下tomcat下亂碼-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--寫入日志到檔案的appender-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${LOG_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>512MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--異步到檔案-->
    <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>500</queueSize>
        <appender-ref ref="FILE"/>
    </appender>

    <!--生産環境:列印控制台和輸出到檔案-->
    <springProfile name="prod">
        <root level="${LOG_LEVEL}">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="asyncFileAppender"/>
        </root>
    </springProfile>

    <!--開發環境:列印控制台-->
    <springProfile name="dev">
        <root level="${LOG_LEVEL}">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="asyncFileAppender"/>
        </root>
    </springProfile>

    <!--測試環境:列印控制台-->
    <springProfile name="test">
        <!-- 列印sql -->
        <logger name="com.sun.example" level="DEBUG"/>
        <root level="${LOG_LEVEL}">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="asyncFileAppender"/>
        </root>
    </springProfile>
</configuration>
           

參考:

蝈蝈的部落格 - Spring Boot教程(五):預設日志logback

朱兆麟 - Spring Boot Logging 配置

結合了上面兩個部落格的配置 加上springProperty 标簽的應用

希望可以幫到各位!

繼續閱讀