摘要:定制日志文件簡單的日志配置不能滿足實際項目需求,那可以通過引用定制日志文件的形式達到目的。能根據類路徑下的類庫和配置文件自動配置對應的日志框架。看到這里,相信你對的日志應該有了一個全面的了解。
本節內容基于 Spring Boot 2.0.
你所需具備的基礎什么是 Spring Boot?
Spring Boot 核心配置文件詳解
Spring Boot 開啟的 2 種方式
Spring Boot 自動配置原理、實戰
Spring Boot 2.x 啟動全過程源碼分析
更多請在Java技術棧微信公眾號后臺回復關鍵字:boot。
Spring Boot 日志綜合介紹Spring Boot 內部代碼使用的是 commons-logging 來記錄日志的,但是底層日志實現框架是可以隨意替換的。Spring Boot為 Java Util Logging, Log4J2, 和 Logback 日志框架提供了默認配置。
Spring Boot支持的日志框架默認配置如下。
# 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.
如果不配置以上任何參數,日志默認只會以 INFO 以上的級別打印在控制臺,不會記錄在日志文件中。
如果使用了任何 Starters,那 Spring Boot 默認會使用 Logback 日志框架記錄日志,并為 Logback 提供了支持Java Util Logging, Commons Logging, Log4J, SLF4J 適合的橋接器以便能從這些日志門面中自由切換。即項目中不管使用哪個日志門面,Logback都能正常工作。
如下圖,從 spring-boot-starter-web 依賴樹中看出包含了默認日志框架 Logback 及其他的橋接器。
Spring Boot 日志實戰在配置文件 application.properties 添加以下配置。
# 日志級別 logging.level.root=DEBUG # 輸出到日志文件 logging.file=d:/logs/javastack.log # 控制框架中的日志級別 logging.level.org.springframework=INFO logging.level.sun=WARN
在 Application 啟動類中添加以下測試代碼。
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...
程序中使用了三種不同的日志門面測試,和默認的 Logback 框架工作都十分正常,日志也正常輸出到指定文件中了。
Spring Boot 默認提供配置的形式非常簡單,只適合簡單的日志應用,雖然說日志輸出格式可以自定義,但日志文件如何按天滾動等其他更復雜的策略卻不能配置,只能通過自定義引用日志文件的形式。
Spring Boot 定制日志文件簡單的日志配置不能滿足實際項目需求,那可以通過引用定制日志文件的形式達到目的。Spring Boot能根據類路徑下的類庫和配置文件自動配置對應的日志框架。
日志框架 | 配置文件 |
---|---|
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 |
按對應類庫在 classpath 下創建對應支持的日志配置文件就行,或者通過配置 logging.config 指定。
既然默認是支持 Logback 的,那現在只要在資源根目錄下創建一個 logback-spring.xml 文件即可。xx-spring 這是 Spring Boot 推薦的命名方式,否則 Spring Boot 不能完全控制日志初始化,因為默認命名配置文件 logback.xml 加載較早不能獲取到 application.properties 中的配置信息。
看到這里,相信你對 Spring Boot 的日志應該有了一個全面的了解。如何使用配置文件打印日志和傳統項目一樣,這里就不啰嗦了。
所有 Spring Boot 文章示例代碼都在 Github 上面,大家可以 Star 關注一下。
https://github.com/javastacks...
關注Java技術棧,獲取更多干貨推送!
本文原創首發于微信公眾號:Java技術棧(id:javastack),關注公眾號在后臺回復 "boot" 可獲取更多,轉載請原樣保留本信息。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72203.html
摘要:在年首次發表了這種語言,另外與也是這語言的共同設計者。每種都可以通過配置使用控制臺或者文件輸出日志內容??梢酝ㄟ^是中的一個設置的日志級別。參考文檔新年彩蛋自定義參考指南配置類配置詳解 導讀: 在上篇文章學習到了如何搭建一個簡單的Spring Boot的項目,這篇文章我們主要圍繞Spring Boot的外部化文件展開, 快速開始:外部化配置 首先是一個典型的Spring Boot的項...
摘要:全局配置文件默認為下的,另外它還可以重命名為格式即對著兩種格式均支持。其中每個環境的數據庫地址服務器端口等等配置都會不同,如果在為不同環境打包時都要頻繁修改配置文件的話,那必將是個非常繁瑣且容易發生錯誤的事。 SpringBoot全局配置文件默認為src/main/resources下的application.properties,另外它還可以重命名為.yml格式(即SpringBoo...
摘要:最近棧長看到一個框架,官方號稱可以比快倍,居然這么牛逼,有這么神奇嗎今天帶大家來認識一下。官網簡介很簡單,翻譯過來就是一個快速輕量級和更高效的微服務框架。 最近棧長看到一個框架,官方號稱可以比 Spring Boot 快 44 倍,居然這么牛逼,有這么神奇嗎?今天帶大家來認識一下。 這個框架名叫:light-4j。 官網簡介:A fast, lightweight and more p...
摘要:下一代服務端開發下一代服務端開發第部門快速開始第章快速開始環境準備,,快速上手實現一個第章企業級服務開發從到語言的缺點發展歷程的缺點為什么是產生的背景解決了哪些問題為什么是的發展歷程容器的配置地獄是什么從到下一代企業級服務開發在移動開發領域 《 Kotlin + Spring Boot : 下一代 Java 服務端開發 》 Kotlin + Spring Boot : 下一代 Java...
閱讀 3056·2021-10-12 10:12
閱讀 5375·2021-09-26 10:20
閱讀 1523·2021-07-26 23:38
閱讀 2812·2019-08-30 15:54
閱讀 1643·2019-08-30 13:45
閱讀 1962·2019-08-30 11:23
閱讀 3085·2019-08-29 13:49
閱讀 830·2019-08-26 18:23