亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Spring Boot 自定義日志詳解

baishancloud / 1142人閱讀

摘要:定制日志文件簡(jiǎn)單的日志配置不能滿足實(shí)際項(xiàng)目需求,那可以通過(guò)引用定制日志文件的形式達(dá)到目的。能根據(jù)類路徑下的類庫(kù)和配置文件自動(dòng)配置對(duì)應(yīng)的日志框架??吹竭@里,相信你對(duì)的日志應(yīng)該有了一個(gè)全面的了解。

本節(jié)內(nèi)容基于 Spring Boot 2.0.

你所需具備的基礎(chǔ)

什么是 Spring Boot?

Spring Boot 核心配置文件詳解

Spring Boot 開(kāi)啟的 2 種方式

Spring Boot 自動(dòng)配置原理、實(shí)戰(zhàn)

Spring Boot 2.x 啟動(dòng)全過(guò)程源碼分析

更多請(qǐng)?jiān)贘ava技術(shù)棧微信公眾號(hào)后臺(tái)回復(fù)關(guān)鍵字:boot。

Spring Boot 日志綜合介紹

Spring Boot 內(nèi)部代碼使用的是 commons-logging 來(lái)記錄日志的,但是底層日志實(shí)現(xiàn)框架是可以隨意替換的。Spring Boot為 Java Util Logging, Log4J2, 和 Logback 日志框架提供了默認(rèn)配置。

Spring Boot支持的日志框架默認(rèn)配置如下。

# LOGGING
logging.config= # Location of the logging configuration file. For instance, `classpath:logback.xml` for Logback.
logging.exception-conversion-word=%wEx # Conversion word used when logging exceptions.
logging.file= # Log file name (for instance, `myapp.log`). Names can be an exact location or relative to the current directory.
logging.file.max-history=0 # Maximum of archive log files to keep. Only supported with the default logback setup.
logging.file.max-size=10MB # Maximum log file size. Only supported with the default logback setup.
logging.level.*= # Log levels severity mapping. For instance, `logging.level.org.springframework=DEBUG`.
logging.path= # Location of the log file. For instance, `/var/log`.
logging.pattern.console= # Appender pattern for output to the console. Supported only with the default Logback setup.
logging.pattern.dateformat=yyyy-MM-dd HH:mm:ss.SSS # Appender pattern for log date format. Supported only with the default Logback setup.
logging.pattern.file= # Appender pattern for output to a file. Supported only with the default Logback setup.
logging.pattern.level=%5p # Appender pattern for log level. Supported only with the default Logback setup.
logging.register-shutdown-hook=false # Register a shutdown hook for the logging system when it is initialized.

如果不配置以上任何參數(shù),日志默認(rèn)只會(huì)以 INFO 以上的級(jí)別打印在控制臺(tái),不會(huì)記錄在日志文件中。

如果使用了任何 Starters,那 Spring Boot 默認(rèn)會(huì)使用 Logback 日志框架記錄日志,并為 Logback 提供了支持Java Util Logging, Commons Logging, Log4J, SLF4J 適合的橋接器以便能從這些日志門面中自由切換。即項(xiàng)目中不管使用哪個(gè)日志門面,Logback都能正常工作。

如下圖,從 spring-boot-starter-web 依賴樹(shù)中看出包含了默認(rèn)日志框架 Logback 及其他的橋接器。

Spring Boot 日志實(shí)戰(zhàn)

在配置文件 application.properties 添加以下配置。

# 日志級(jí)別
logging.level.root=DEBUG

# 輸出到日志文件
logging.file=d:/logs/javastack.log

# 控制框架中的日志級(jí)別
logging.level.org.springframework=INFO
logging.level.sun=WARN

Application 啟動(dòng)類中添加以下測(cè)試代碼。

private static final org.apache.commons.logging.Log logger1 = org.apache.commons.logging
            .LogFactory
            .getLog(SpringBootBestPracticeApplication.class);

private static final org.slf4j.Logger logger2 = org.slf4j.LoggerFactory
        .getLogger(SpringBootBestPracticeApplication.class);

private static final java.util.logging.Logger logger3 = java.util.logging.Logger
        .getLogger("SpringBootBestPracticeApplication");
        
@Bean
public CommandLineRunner loggerLineRunner() {
    return (args) -> {
        logger1.error("commons logging error...");

        logger1.info("commons logging info...");
        logger2.info("slf4j info...");
        logger2.info("java util logging info...");

        logger1.debug("commons logging debug...");
    };
}        

日志輸出如下。

2018-05-24 17:16:21.645 ERROR 3132 --- [           main] c.j.s.SpringBootBestPracticeApplication  : commons logging error...
2018-05-24 17:16:21.645  INFO 3132 --- [           main] c.j.s.SpringBootBestPracticeApplication  : commons logging info...
2018-05-24 17:16:21.645  INFO 3132 --- [           main] c.j.s.SpringBootBestPracticeApplication  : slf4j info...
2018-05-24 17:16:21.645  INFO 3132 --- [           main] c.j.s.SpringBootBestPracticeApplication  : java util logging info...
2018-05-24 17:16:21.645 DEBUG 3132 --- [           main] c.j.s.SpringBootBestPracticeApplication  : commons logging debug...

程序中使用了三種不同的日志門面測(cè)試,和默認(rèn)的 Logback 框架工作都十分正常,日志也正常輸出到指定文件中了。

Spring Boot 默認(rèn)提供配置的形式非常簡(jiǎn)單,只適合簡(jiǎn)單的日志應(yīng)用,雖然說(shuō)日志輸出格式可以自定義,但日志文件如何按天滾動(dòng)等其他更復(fù)雜的策略卻不能配置,只能通過(guò)自定義引用日志文件的形式。

Spring Boot 定制日志文件

簡(jiǎn)單的日志配置不能滿足實(shí)際項(xiàng)目需求,那可以通過(guò)引用定制日志文件的形式達(dá)到目的。Spring Boot能根據(jù)類路徑下的類庫(kù)和配置文件自動(dòng)配置對(duì)應(yīng)的日志框架。

日志框架 配置文件
Logback logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
Log4j2 log4j2-spring.xml or log4j2.xml
JDK (Java Util Logging) logging.properties

按對(duì)應(yīng)類庫(kù)在 classpath 下創(chuàng)建對(duì)應(yīng)支持的日志配置文件就行,或者通過(guò)配置 logging.config 指定。

既然默認(rèn)是支持 Logback 的,那現(xiàn)在只要在資源根目錄下創(chuàng)建一個(gè) logback-spring.xml 文件即可。xx-spring 這是 Spring Boot 推薦的命名方式,否則 Spring Boot 不能完全控制日志初始化,因?yàn)槟J(rèn)命名配置文件 logback.xml 加載較早不能獲取到 application.properties 中的配置信息。

看到這里,相信你對(duì) Spring Boot 的日志應(yīng)該有了一個(gè)全面的了解。如何使用配置文件打印日志和傳統(tǒng)項(xiàng)目一樣,這里就不啰嗦了。

所有 Spring Boot 文章示例代碼都在 Github 上面,大家可以 Star 關(guān)注一下。

https://github.com/javastacks...

關(guān)注Java技術(shù)棧,獲取更多干貨推送!

本文原創(chuàng)首發(fā)于微信公眾號(hào):Java技術(shù)棧(id:javastack),關(guān)注公眾號(hào)在后臺(tái)回復(fù) "boot" 可獲取更多,轉(zhuǎn)載請(qǐng)?jiān)瓨颖A舯拘畔ⅰ?/pre>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/72203.html

相關(guān)文章

  • Spring Boot [配置-上篇]

    摘要:在年首次發(fā)表了這種語(yǔ)言,另外與也是這語(yǔ)言的共同設(shè)計(jì)者。每種都可以通過(guò)配置使用控制臺(tái)或者文件輸出日志內(nèi)容??梢酝ㄟ^(guò)是中的一個(gè)設(shè)置的日志級(jí)別。參考文檔新年彩蛋自定義參考指南配置類配置詳解 導(dǎo)讀: 在上篇文章學(xué)習(xí)到了如何搭建一個(gè)簡(jiǎn)單的Spring Boot的項(xiàng)目,這篇文章我們主要圍繞Spring Boot的外部化文件展開(kāi), 快速開(kāi)始:外部化配置 首先是一個(gè)典型的Spring Boot的項(xiàng)...

    xuweijian 評(píng)論0 收藏0
  • SpringBoot學(xué)習(xí)筆記:Spring Boot配置文件詳解

    摘要:全局配置文件默認(rèn)為下的,另外它還可以重命名為格式即對(duì)著兩種格式均支持。其中每個(gè)環(huán)境的數(shù)據(jù)庫(kù)地址服務(wù)器端口等等配置都會(huì)不同,如果在為不同環(huán)境打包時(shí)都要頻繁修改配置文件的話,那必將是個(gè)非常繁瑣且容易發(fā)生錯(cuò)誤的事。 SpringBoot全局配置文件默認(rèn)為src/main/resources下的application.properties,另外它還可以重命名為.yml格式(即SpringBoo...

    sunny5541 評(píng)論0 收藏0
  • 一個(gè)比Spring Boot快44倍的Java框架!

    摘要:最近棧長(zhǎng)看到一個(gè)框架,官方號(hào)稱可以比快倍,居然這么牛逼,有這么神奇嗎今天帶大家來(lái)認(rèn)識(shí)一下。官網(wǎng)簡(jiǎn)介很簡(jiǎn)單,翻譯過(guò)來(lái)就是一個(gè)快速輕量級(jí)和更高效的微服務(wù)框架。 最近棧長(zhǎng)看到一個(gè)框架,官方號(hào)稱可以比 Spring Boot 快 44 倍,居然這么牛逼,有這么神奇嗎?今天帶大家來(lái)認(rèn)識(shí)一下。 這個(gè)框架名叫:light-4j。 官網(wǎng)簡(jiǎn)介:A fast, lightweight and more p...

    amc 評(píng)論0 收藏0
  • 《 Kotlin + Spring Boot : 下一代 Java 服務(wù)端開(kāi)發(fā) 》

    摘要:下一代服務(wù)端開(kāi)發(fā)下一代服務(wù)端開(kāi)發(fā)第部門快速開(kāi)始第章快速開(kāi)始環(huán)境準(zhǔn)備,,快速上手實(shí)現(xiàn)一個(gè)第章企業(yè)級(jí)服務(wù)開(kāi)發(fā)從到語(yǔ)言的缺點(diǎn)發(fā)展歷程的缺點(diǎn)為什么是產(chǎn)生的背景解決了哪些問(wèn)題為什么是的發(fā)展歷程容器的配置地獄是什么從到下一代企業(yè)級(jí)服務(wù)開(kāi)發(fā)在移動(dòng)開(kāi)發(fā)領(lǐng)域 《 Kotlin + Spring Boot : 下一代 Java 服務(wù)端開(kāi)發(fā) 》 Kotlin + Spring Boot : 下一代 Java...

    springDevBird 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<