日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot各种日志记录方式详解

發布時間:2023/12/20 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot各种日志记录方式详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:https://blog.csdn.net/ztchun/article/details/79804583

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/zhoutaochun/article/details/79804583 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg><blockquote>

一個人只要有意志力,就能超越他的環境。——《馬丁·伊登》

1、日志框架比較(slf4j、log4j、logback、log4j2)

Spring Boot在所有內部日志中使用Commons Logging,但是默認配置也提供了對常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種Logger都可以通過配置使用控制臺或者文件輸出日志內容。

1.1 slf4j

slf4j是對所有日志框架制定的一種規范、標準、接口,并不是一個框架的具體的實現,因為接口并不能獨立使用,需要和具體的日志框架實現配合使用(如log4j、logback)

為什么需要日志接口,直接使用具體的實現不就行了嗎?

接口用于定制規范,可以有多個實現,使用時是面向接口的(導入的包都是slf4j的包而不是具體某個日志框架中的包),即直接和接口交互,不直接使用實現,所以可以任意的更換實現而不用更改代碼中的日志相關代碼。

比如:slf4j定義了一套日志接口,項目中使用的日志框架是logback,開發中調用的所有接口都是slf4j的,不直接使用logback,調用是 自己的工程調用slf4j的接口,slf4j的接口去調用logback的實現,可以看到整個過程應用程序并沒有直接使用logback,當項目需要更換更加優秀的日志框架時(如log4j2)只需要引入Log4j2的jar和Log4j2對應的配置文件即可,完全不用更改Java代碼中的日志相關的代碼logger.info(“xxx”),也不用修改日志相關的類的導入的包(import org.slf4j.Logger;
import org.slf4j.LoggerFactory;)

使用日志接口便于更換為其他日志框架。
log4j、logback、log4j2都是一種日志具體實現框架,所以既可以單獨使用也可以結合slf4j一起搭配使用)

1.2 log4j

log4j是apache實現的一個開源日志組件。通過使用log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。

1.3 logback

logback同樣是由log4j的作者設計完成的,擁有更好的特性,用來取代log4j的一個日志框架,是slf4j的原生實現,所以logback與slf4j的結合最好。]

Logback,一個“可靠、通用、快速而又靈活的Java日志框架”。logback當前分成三個模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊。logback-classic是log4j的一個改良版本。此外logback-classic完整實現SLF4J API使你可以很方便地更換成其它日志系統如log4j或JDK Logging。logback-access訪問模塊與Servlet容器集成提供通過Http來訪問日志的功能。
1. logback-core: Joran, Status, context, pattern parsing
2. logback-classic: developer logging
3. logback-access: The log generated when a user accesses a web-page on a web server. Integrates seamlessly with Jetty and Tomcat.

選擇logback的理由:
1. logback比log4j要快大約10倍,而且消耗更少的內存。
2. logback-classic模塊直接實現了SLF4J的接口,所以我們遷移到logback幾乎是零開銷的。
3. logback不僅支持xml格式的配置文件,還支持groovy格式的配置文件。相比之下,Groovy風格的配置文件更加直觀,簡潔。
4. logback-classic能夠檢測到配置文件的更新,并且自動重新加載配置文件。
5. logback能夠優雅的從I/O異常中恢復,從而我們不用重新啟動應用程序來恢復logger。
6. logback能夠根據配置文件中設置的上限值,自動刪除舊的日志文件。
7. logback能夠自動壓縮日志文件。
8. logback能夠在配置文件中加入條件判斷(if-then-else)。可以避免不同的開發環境(dev、test、uat…)的配置文件的重復。
9. logback帶來更多的filter。
10. logback的stack trace中會包含詳細的包信息。
11. logback-access和Jetty、Tomcat集成提供了功能強大的HTTP-access日志。
配置文件:需要在項目的src目錄下建立一個logback.xml。
注:(1)logback首先會試著查找logback.groovy文件;
(2)當沒有找到時,繼續試著查找logback-test.xml文件;
(3)當沒有找到時,繼續試著查找logback.xml文件;
(4)如果仍然沒有找到,則使用默認配置(打印到控制臺)。

1.4 log4j2

Log4j2是log4j 1.x和logback的改進版,據說采用了一些新技術(無鎖異步、等等),使得日志的吞吐量、性能比log4j 1.x提高10倍,并解決了一些死鎖的bug,而且配置更加簡單靈活。

Spring Boot1.4以及之后的版本已經不支持log4j,log4j也很久沒有更新了,現在已經有很多其他的日志框架對Log4j進行了改良,比如說SLF4J、Logback等。而且Log4j 2在各個方面都與Logback非常相似,那么為什么我們還需要Log4j 2呢?
  1. 插件式結構。Log4j 2支持插件式結構。我們可以根據自己的需要自行擴展Log4j 2. 我們可以實現自己的appender、logger、filter。
  2. 配置文件優化。在配置文件中可以引用屬性,還可以直接替代或傳遞到組件。而且支持json格式的配置文件。不像其他的日志框架,它在重新配置的時候不會丟失之前的日志文件。
  3. Java 5的并發性。Log4j 2利用Java 5中的并發特性支持,盡可能地執行最低層次的加鎖。解決了在log4j 1.x中存留的死鎖的問題。
  4. 異步logger。Log4j 2是基于LMAX Disruptor庫的。在多線程的場景下,和已有的日志框架相比,異步的logger擁有10倍左右的效率提升。

2、日志框架應用

2.1 slf4j


什么時候使用SLF4J比較合適呢?
如果你開發的是類庫或者嵌入式組件,那么就應該考慮采用SLF4J,因為不可能影響最終用戶選擇哪種日志系統。在另一方面,如果是一個簡單或者獨立的應用,確定只有一種日志系統,那么就沒有使用SLF4J的必要。假設你打算將你使用log4j的產品賣給要求使用JDK 1.8 Logging的用戶時,面對成千上萬的log4j調用的修改,相信這絕對不是一件輕松的事情。但是如果開始便使用SLF4J,那么這種轉換將是非常輕松的事情。

首先引入slf4j包:
slf4j-simple是slf4j的一種日志系統實現,目前最新版本是1.7.7

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>1.7.7</version> </dependency>

    假如后期改變log實現系統,所有調用log4j的代碼都需要進行修改,假如一開始都使用slf4j.Logger,后期將無需修改代碼,通過修改配置文件即可切換日志系統。

    import org.slf4j.Logger; import org.slf4j.LoggerFactory;private static Logger logger = LoggerFactory.getLogger(TestLog4jApplication.class);

    2.2 log4j

    log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、數據庫等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。
    Log4j有7種不同的log級別,按照等級從低到高依次為:TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。如果配置為OFF級別,表示關閉log。
    Log4j支持兩種格式的配置文件:properties和xml。包含三個主要的組件:Logger、appender、Layout。

    (1)控制臺輸出

    通過如下配置,設定root日志的輸出級別為INFO,appender為控制臺輸出stdout

    # LOG4J配置 log4j.rootLogger=INFO,stdout # 控制臺輸出 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:

    (2)輸出到文件

    在開發環境,我們只是輸出到控制臺沒有問題,但是到了生產或測試環境,或許持久化日志內容,方便追溯問題原因。可以通過添加如下的appender內容,按天輸出到不同的文件中去,同時還需要為log4j.rootLogger添加名為file的appender,這樣root日志就可以輸出到logs/springboot.log文件中了。輸出到文件和輸出到控制臺是可以并行存在的。

    # LOG4J配置 log4j.rootLogger=INFO,stdout,file # 日志輸出到文件 log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.file=logs/springboot.log log4j.appender.file.DatePattern='.'yyyy-MM-dd log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

    (3)分類輸出

    當我們日志量較多的時候,查找問題會非常困難,常用的手段就是對日志進行分類,比如:
    可以按不同package進行輸出。通過定義輸出到logs/my.log的appender,并對com.test包下的日志級別設定為DEBUG級別、appender設置為輸出到logs/my.log的名為testlog的appender。

    # com.test包下的日志配置 log4j.logger.com.test=DEBUG, testlog # com.test下的日志輸出 log4j.appender.testlog=org.apache.log4j.DailyRollingFileAppender log4j.appender.testlog.file=logs/my.log log4j.appender.testlog.DatePattern='.'yyyy-MM-dd log4j.appender.testlog.layout=org.apache.log4j.PatternLayout log4j.appender.testlog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n

    可以對不同級別進行分類,比如對ERROR級別輸出到特定的日志文件中,具體配置可以如下:

    # LOG4J配置 log4j.rootCategory=INFO, stdout,errorfile log4j.logger.error=errorfile# error日志輸出 log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.errorfile.file=logs/error.log log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd log4j.appender.errorfile.Threshold = ERROR log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n %5p %c{1}:%L - %m%n

    (4)輸出到數據庫
    將日志文件輸出到數據庫配置:

    # LOG4J配置 log4j.rootCategory=INFO,stdout,jdbc# 數據庫輸出 log4j.appender.jdbc=org.apache.log4j.jdbc.JDBCAppender log4j.appender.jdbc.driver=com.mysql.jdbc.Driver log4j.appender.jdbc.URL=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=true log4j.appender.jdbc.user=root log4j.appender.jdbc.password=root log4j.appender.jdbc.sql=insert into log_icecoldmonitor(level,category,thread,time,location,note) values('%p','%c','%t','%d{yyyy-MM-dd HH:mm:ss:SSS}','%l','%m')

    引入數據庫驅動:

    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId> </dependency>

    創建表:

    CREATE TABLE `log_icecoldmonitor` (`Id` int(11) NOT NULL AUTO_INCREMENT,`level` varchar(255) NOT NULL DEFAULT '' COMMENT '優先級',`category` varchar(255) NOT NULL DEFAULT '' COMMENT '類目',`thread` varchar(255) NOT NULL DEFAULT '' COMMENT '進程',`time` varchar(30) NOT NULL DEFAULT '' COMMENT '時間',`location` varchar(255) NOT NULL DEFAULT '' COMMENT '位置',`note` text COMMENT '日志信息',PRIMARY KEY (`Id`) )

    這樣就可以保存到日志到數據庫了,可能會出現如下異常信息:
    Java連接Mysql數據庫警告:Establishing SSL connection
    原因是MySQL在高版本需要指明是否進行SSL連接。解決方案如下:
    在mysql連接字符串url中加入ssl=true或者false即可,如下所示。
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=true

    2.2.1 log4j在Spring Boot上的應用

    (1)引入log4j依賴
    在創建Spring Boot工程時,我們引入了spring-boot-starter,其中包含了spring-boot-starter-logging,該依賴內容就是Spring Boot默認的日志框架Logback,所以我們在引入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> </dependency>

    值得注意的是,spring boot 1.3版本支持log4j,在spring boot 1.4的版本中,就需要使用log4j2,否則會出現如下錯誤:Project build error: ‘dependencies.dependency.version’ for org.springframework.boot:spring-boot-starter-log4j:jar is missing.

    (2)配置log4j-spring.properties
    在引入了log4j依賴之后,只需要在src/main/resources目錄下加入log4j.properties(或log4j-spring.properties)配置文件,就可以開始對應用的日志進行配置使用。測試配置內容如下:

    # DEBUG INFO WARN ERROR FATAL log4j.rootLogger = info,stdout,errorlogfilelog4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Threshold = info log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n log4j.appender.stdout.ImmediateFlush = truelog4j.appender.errorlogfile = org.apache.log4j.DailyRollingFileAppender log4j.appender.errorlogfile.Threshold = INFO log4j.appender.errorlogfile.layout = org.apache.log4j.PatternLayout log4j.appender.errorlogfile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n log4j.appender.errorlogfile.File = ../logs/testlog4j.log log4j.appender.errorlogfile.Append = true log4j.appender.errorlogfile.ImmediateFlush = true

    (3)配置application.properties指定log配置文件

    logging.config= classpath:log4j.properties

    (4)在啟動類中進行測試

    private static Logger logger = Logger.getLogger(TestLog4jApplication.class);public static void main(String[] args) {logger.info("log4j----------------\n");SpringApplication.run(TestLog4jApplication.class, args); }

    運行項目,即可看到控制臺打印出的日志信息,同時在項目同級目錄下的logs/testlog4j.log中也會打印出比較詳盡的日志信息。

    2.3 log4j2

    Spring Boot1.4以及之后的版本已經不支持log4j,log4j也很久沒有更新了,現在已經有很多其他的日志框架對Log4j進行了改良,比如說SLF4J、Logback等。而且Log4j 2在各個方面都與Logback非常相似,那么為什么我們還需要Log4j 2呢?
      1. 插件式結構。Log4j 2支持插件式結構。我們可以根據自己的需要自行擴展Log4j 2. 我們可以實現自己的appender、logger、filter。
      2. 配置文件優化。在配置文件中可以引用屬性,還可以直接替代或傳遞到組件。而且支持json格式的配置文件。不像其他的日志框架,它在重新配置的時候不會丟失之前的日志文件。
      3. Java 5的并發性。Log4j 2利用Java 5中的并發特性支持,盡可能地執行最低層次的加鎖。解決了在log4j 1.x中存留的死鎖的問題。
      4. 異步logger。Log4j 2是基于LMAX Disruptor庫的。在多線程的場景下,和已有的日志框架相比,異步的logger擁有10倍左右的效率提升。
      
    官方建議一般程序員查看的日志改成異步方式,一些運營日志改成同步。日志異步輸出的好處在于,使用單獨的進程來執行日志打印的功能,可以提高日志執行效率,減少日志功能對正常業務的影響。異步日志在程序的classpath需要加載disruptor-3.0.0.jar或者更高的版本。

    <!-- log4j2異步日志需要加載disruptor-3.0.0.jar或者更高的版本 --><dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.3.6</version>

    異步日志分為兩種:
    a.全異步模式
    這種異步日志方式,不需要修改修改原理的配置文件,Logger仍然使用 and
    只需要在主程序代碼開頭,加一句系統屬性的代碼:

    System.setProperty("Log4jContextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");

      b.異步和非異步混合輸出模式
      在配置文件中Logger使用 or

      <loggers> <AsyncLogger name="AsyncLogger" level="trace" includeLocation="true"> <appender-ref ref="Console" /> <appender-ref ref="debugLog" /> <appender-ref ref="errorLog" /> </AsyncLogger> <asyncRoot level="trace" includeLocation="true"> <appender-ref ref="Console" /> </asyncRoot> </loggers>

      2.3.1 log4j2在Spring boot上的應用

      (1)引入log4j2依賴
      在創建Spring Boot工程時,我們引入了spring-boot-starter,其中包含了spring-boot-starter-logging,該依賴內容就是Spring Boot默認的日志框架Logback,所以我們在引入log4j2之前,需要先排除該包的依賴,再引入log4j2的依賴。

      <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-log4j2</artifactId> </dependency>

      (2)log4j2.xml配置
      有一點需要注意的是,假如想要在application.properties中指定日志文件存放路徑或日志文件名,在log4j2.xml中使用LOGPATHLOGPATH或者{LOG_FILE}來引用,是無法獲取到的(在logback中可以盡情使用)。log4j2支持xml、json、yaml等格式的配置文件。

      <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Properties><property name="LOG_PATH">../logs/</property><property name="LOG_FILE">testlog4j2</property></Properties><Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout> <pattern>%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n</pattern> </PatternLayout> </Console> <RollingFile name="errorlogfile" fileName="${LOG_PATH}/${LOG_FILE}.log"filePattern="${LOG_PATH}/$${date:yyyy-MM}/${LOG_FILE}-%d{yyyy-MM-dd HH-mm}-%i.log"><PatternLayout> <pattern>%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n</pattern></PatternLayout> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="50 MB" /> </Policies> <DefaultRolloverStrategy max="20" /> </RollingFile> </Appenders> <Loggers> <root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="errorlogfile" /> </root> </Loggers> </Configuration>

      (3)application.properties配置
      指定log配置文件位置

      logging.config= classpath:log4j2.xml
      • 1

      (4)在啟動類中進行測試

      private static Logger logger = LogManager.getLogger(TestLog4j2Application.class);public static void main(String[] args) {logger.error("log4j2----------------\n");SpringApplication.run(TestLog4j2Application.class, args); }

      運行項目,即可看到控制臺打印出的日志信息,同時在項目同級目錄下的logs/testlog4j2.log中也會打印出比較詳盡的日志信息。

      2.4 Logback

      Logback,一個“可靠、通用、快速而又靈活的Java日志框架”。logback當前分成三個模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊。logback-classic是log4j的一個改良版本。此外logback-classic完整實現SLF4J API使你可以很方便地更換成其它日志系統如log4j或JDK Logging。logback-access訪問模塊與Servlet容器集成提供通過Http來訪問日志的功能。
      1. logback-core: Joran, Status, context, pattern parsing
      2. logback-classic: developer logging
      3. logback-access: The log generated when a user accesses a web-page on a web server. Integrates seamlessly with Jetty and Tomcat.

      選擇logback的理由:
      1. logback比log4j要快大約10倍,而且消耗更少的內存。
      2. logback-classic模塊直接實現了SLF4J的接口,所以我們遷移到logback幾乎是零開銷的。
      3. logback不僅支持xml格式的配置文件,還支持groovy格式的配置文件。相比之下,Groovy風格的配置文件更加直觀,簡潔。
      4. logback-classic能夠檢測到配置文件的更新,并且自動重新加載配置文件。
      5. logback能夠優雅的從I/O異常中恢復,從而我們不用重新啟動應用程序來恢復logger。
      6. logback能夠根據配置文件中設置的上限值,自動刪除舊的日志文件。
      7. logback能夠自動壓縮日志文件。
      8. logback能夠在配置文件中加入條件判斷(if-then-else)。可以避免不同的開發環境(dev、test、uat…)的配置文件的重復。
      9. logback帶來更多的filter。
      10. logback的stack trace中會包含詳細的包信息。
      11. logback-access和Jetty、Tomcat集成提供了功能強大的HTTP-access日志。
      配置文件:需要在項目的src目錄下建立一個logback.xml。
      注:(1)logback首先會試著查找logback.groovy文件;
      (2)當沒有找到時,繼續試著查找logback-test.xml文件;
      (3)當沒有找到時,繼續試著查找logback.xml文件;
      (4)如果仍然沒有找到,則使用默認配置(打印到控制臺)。

      logback的一些配置介紹:
      * 控制臺輸出
      在Spring Boot中默認配置了ERROR、WARN和INFO級別的日志輸出到控制臺。我們可以通過兩種方式切換至DEBUG級別:
      在運行命令后加入–debug標志,如:$ java -jar test.jar –debug
      在application.properties中配置debug=true,該屬性置為true的時候,核心Logger(包含嵌入式容器、hibernate、spring)會輸出更多內容,但是你自己應用的日志并不會輸出為DEBUG級別。

      多彩輸出
      如果你的終端支持ANSI,設置彩色輸出會讓日志更具可讀性。通過在application.properties中設置spring.output.ansi.enabled參數來支持。
      NEVER:禁用ANSI-colored輸出(默認項)
      DETECT:會檢查終端是否支持ANSI,是的話就采用彩色輸出(推薦項)
      ALWAYS:總是使用ANSI-colored格式輸出,若終端不支持的時候,會有很多干擾信息,不推薦使用

      文件輸出
      Spring Boot默認配置只會輸出到控制臺,并不會記錄到文件中,但是我們通常生產環境使用時都需要以文件方式記錄。
      若要增加文件輸出,需要在application.properties中配置logging.file或logging.path屬性。
      logging.file,設置文件,可以是絕對路徑,也可以是相對路徑。如:logging.file=my.log
      logging.path,設置目錄,會在該目錄下創建spring.log文件,并寫入日志內容,如:logging.path=../logs
      日志文件會在10Mb大小的時候被截斷,產生新的日志文件,默認級別為:ERROR、WARN、INFO

      級別控制
      在Spring Boot中只需要在application.properties中進行配置完成日志記錄的級別控制。
      配置格式:logging.level.*=LEVEL
      logging.level:日志級別控制前綴,*為包名或Logger名
      LEVEL:選項TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
      舉例:
      logging.level.com.test=DEBUG:com.test包下所有class以DEBUG級別輸出
      logging.level.root=WARN:root日志以WARN級別輸出

      自定義輸出格式
      在Spring Boot中可以通過在application.properties配置如下參數控制輸出格式:
      logging.pattern.console:定義輸出到控制臺的樣式(不支持JDK Logger)
      logging.pattern.file:定義輸出到文件的樣式(不支持JDK Logger)

      2.4.1 logback在Spring Boot中的應用

      logback是Spring Boot默認的日志系統,假如對日志沒有特殊要求,可以完全零配置使用 SLF4J(Simple Logging Facade For Java)的logback來輸出日志。

      package com.jianeye.test;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class TestApplication {private static Logger logger = LoggerFactory.getLogger(TestApplication.class);public static void main(String[] args) {logger.warn("logback --------------------------------\n"); SpringApplication.run(TestApplication.class, args);logger.info("default log system *************************\n"); } }

      Spring Boot也支持自定義日志配置,有以下兩種方式。
      1. 在 src/main/resources 下面創建logback.xml (根據不同環境來定義不同的日志輸出,那么取名為logback-spring.xml 即可)文件,并按需求進行配置。

      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"/><logger name="org.springboot.sample" level="TRACE" /><springProfile name="dev"><logger name="org.springboot.sample" level="DEBUG" /></springProfile><springProfile name="staging"><logger name="org.springboot.sample" level="INFO" /></springProfile> </configuration>

      (2)使用最簡單的方法,在 application 配置文件中配置。

      logging:config: classpath:logback-spring.xmlfile: cuckoo3path: /cuckoo3-log/logslevel: com.jianeye.cuckoo3.webside: DEBU

      需要注意幾點:
      1. 這里若不配置具體的包的日志級別,日志文件信息將為空
      2. 若只配置logging.path,那么將會在E:\logs文件夾生成一個日志文件為spring.log
      3. 若只配置logging.file,那將會在項目的當前路徑下生成一個demo.log日志文件
      4. logging.path和logging.file同時配置,不會有在這個路徑有E:\logs\demo.log日志生成,logging.path和logging.file不會進行疊加
      5. logging.path和logging.file的value都可以是相對路徑或者絕對路徑

      3、三種日志實現的性能比較


      log4j2的異步模式表現了絕對的性能優勢,優勢主要得益于Disruptor框架的使用
      請查看詳細性能分析:https://my.oschina.net/OutOfMemory/blog/789267

      總結

      以上是生活随笔為你收集整理的Spring Boot各种日志记录方式详解的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。