A. java怎麼給logback.xml設置變數的值
通過反射的知識,先獲得類的class位元組碼文件對象,然後通過調用setProperty(前面是變數名,變數值);
B. SpringBoot日誌logback配置
在前一個項目simple-boot-demo項目中配置日誌相關。
SpringBoot日誌依賴為: spring-boot-starter-logging ,不過對於web項目,已經引入了 spring-boot-starter-web ,默認已經自帶了日誌的 spring-boot-starter-logging ,已經默認引入了 logback 實現,只需要配置application.yml即可。
Spring內部使用 Commons Logging ,SpringBoot項目日誌實現可以用log4j2,logback,JDK (Java Util Logging)等。
參考文檔:
https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/howto.html#howto-logging
https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/spring-boot-features.html#boot-features-logging
level是個map,配置不同的日誌名稱的級別,一般情況下都是配置些包名稱就可以了,因為一般都是用類名作為日誌名稱,常見寫法如下:
默認配置下只會在控制台輸出日誌,沒有文件日誌,可以配置文件名來控制文件輸出。
日誌文件配置:
日誌配置示例:
另外一些文件日誌配置如下,主要配置文件大小分隔、歷史記錄、輸出格式等,這些配置在IDE中都有提示輸入:
注意:這些配置在使用自定義的配置文件 logging.config=classpath:logback-spring.xml 時,如果include引入sping-boot項目中的logback配置xml片段,這些application.yml中的配置也是有效的,而且level配置還是優先於配置文件
日誌可以分組配置,針對部分日誌名稱定義一個分組,可以統一配置此分組的級別:
SpringBoot內置的日誌分組:
SpringBoot如果要使用自定義的logback作為日誌實現,需要編寫logback.xml,但是引入logback之後,logback會自動查找logback.xml,因此不能把名字定義為logback.xml,否則可能早於SpringBoot初始化,造成一些配置無效問題。
使用 logback-spring.xml 或者使用 loging.config 來指定配置文件(默認名字為 logback-spring.xml 的文件springboot會自動獲取到,自定義名字需要手動配置):
在spring-boot項目的jar包中,spring為了簡化配置,已經在項目中內置了一些logback的配置片段,方便使用include方式引入,打開可以看到內容是用 <included></include> 包裹,因此自定義配置文件 logback.xml 的時候直接include即可。
配置片段路徑: org/springframework/boot/logging/logback/
典型 logback.xml 配置文件如下,其中引用了spring-boot提供的xml片段:
上面的配置是文件取名為 demo-logback.xml ,方便引入。
配置application.yml: