天天看點

不同環境下如何輸出不同日志 | 帶你讀《SpringBoot實戰教程》之九

上一篇: 2種loger的使用 | 帶你讀《SpringBoot實戰教程》之八 下一篇: 還在手動操作?試試配置為開發模式 | 帶你讀《SpringBoot實戰教程》之十 本文來自于千鋒教育在阿裡雲開發者社群學習中心上線課程《SpringBoot實戰教程》,主講人楊紅豔, 點選檢視視訊内容

13. 多環境日志輸出:

根據不同環境(prod:生産環境,test:測試環境,dev:開發環境)來定義不同的日志輸出,在 logback-spring.xml中使用 springProfile 節點來定義,方法如下:

<!-- 測試環境+開發環境. 多個使用逗号隔開-->
<springProfile name="test,dev">
    <logger name="com.qianfeng.controller" level="info" />
</springProfile>

<!-- 生産環境-->
<springProfile name="prod">
    <logger name="com.qianfeng.controller" level="ERROR" />
</springProfile>           

在application.properties檔案中指明使用哪一種:

spring.profiles.active=prod           

控制台顯示:

不同環境下如何輸出不同日志 | 帶你讀《SpringBoot實戰教程》之九

如果更換配置檔案中的資訊:

spring.profiles.active=test,dev           

控制台列印:

不同環境下如何輸出不同日志 | 帶你讀《SpringBoot實戰教程》之九

14.使用log4j日志管理

1.修改pom.xml檔案,過濾掉自帶的spring-boot-starter-logging,然後添加spring-boot-starter-log4j依賴包。

<!-- log4j -->
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
     </dependency>    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j</artifactId>
        <version>1.3.8.RELEASE</version>
</dependency>
           

2.在resources目錄下建立log4j.properties配置檔案

配置info,error,console,debug四種輸出格式。

log4j.rootLogger=info,error,CONSOLE,DEBUG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender     
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout     
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n     
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout     
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n  
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info   
log4j.appender.info.append=true   
log4j.appender.info.File=e://springboot/api_services_info.log
log4j.logger.error=error  
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout     
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n  
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error   
log4j.appender.error.append=true   
log4j.appender.error.File=e://springboot/api_services_error.log
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout     
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n  
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG   
log4j.appender.DEBUG.append=true   
log4j.appender.DEBUG.File=e://springboot/api_services_debug.log           

3.在使用到的類中聲明log以及輸出log資訊。

在controller中輸入:

@Controller
public class TestController {

    private static Logger log = Logger.getLogger(TestController.class);

    @RequestMapping("/tests")
    @ResponseBody
    public String tests() {

        log.debug("debug日志");
        log.info("info日志");
        log.warn("warn日志");
        log.error("error日志");
        return "tests"
    }
}           

執行結果:

不同環境下如何輸出不同日志 | 帶你讀《SpringBoot實戰教程》之九
不同環境下如何輸出不同日志 | 帶你讀《SpringBoot實戰教程》之九