簡體   English   中英

如何從庫中替換Spring Boot的默認logback配置?

[英]How to replace Spring boot's default logback config from a library?

我正在構建一個彈簧啟動啟動器,以自動為我們的交付團隊配置登錄。 基本上,我附帶了一組可以通過屬性啟用和配置的預配置的logback附加程序。

目標是:

  • 將starter添加到依賴項后,將自動配置logback。 可以使用常規屬性和使用logging.level設置的記錄器級別來調整Appender的行為(例如dev VS prod)。 我希望大多數用戶都願意做。
  • 通過提供自己的logback(-spring)?.xml可以增強默認行為。 您必須包括啟動程序的logback配置文件。
  • 通過提供您自己的logback配置文件,可以完全忽略啟動程序配置。

我的問題是我還沒有找到一種實現此類庫的干凈方法。 我當前的解決方案是注冊一個運行在LoggingApplicationListener之前的應用程序偵聽LoggingApplicationListener 如果未設置logging.config且未找到任何logback配置文件,則logging.config將設置為庫的配置文件。 否則,它什么都不做。

有沒有那么簡單的方法呢?

可以在src / main / resources中擁有自己的logback-spring.xml文件。 作為工作示例,請在此處拍攝帶有JSON日志輸出的自定義附加程序的圖片:

 <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="10 seconds"> <include resource="org/springframework/boot/logging/logback/base.xml"/> <springProperty scope="context" name="jsonFile" source="logging.json.file"/> <springProperty scope="context" name="jsonLevel" source="logging.json.level"/> <springProperty scope="context" name="jsonSize" source="logging.json.size"/> <appender name="jsonAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${jsonFile}</File> <encoder class="net.logstash.logback.encoder.LogstashEncoder"/> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <maxIndex>1</maxIndex> <fileNamePattern>${jsonFile}.%i</fileNamePattern> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>${jsonSize}</MaxFileSize> </triggeringPolicy> </appender> <root level="${jsonLevel}"> <appender-ref ref="jsonAppender"/> </root> </configuration> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM