如何从库中替换Spring boot的默认logback配置?

时间:2018-01-31 09:55:18

标签: spring-boot logging logback

我正在构建一个spring-boot启动程序,以便为我们的交付团队自动配置logback。基本上,我发布了一组预先配置的logback appender,可以通过属性启用和配置。

目标是:

  • 将starter添加到依赖项时,会自动配置logback。可以使用logging.level设置的常规属性和记录器级别来调整Appenders行为(例如dev VS prod)。我希望大多数用户都会想要和做。
  • 可以通过提供自己的logback(-spring)?.xml来扩充默认行为。您必须包含starter的logback配置文件。
  • 可以通过提供自己的logback配置文件来完全忽略启动器配置。

我的问题是我没有找到 clean 方法来实现这样的库。我目前的解决方案是注册一个在LoggingApplicationListener之前运行的应用程序监听器。如果未设置logging.config且未找到任何回溯配置文件,则logging.config将设置为库的配置文件。否则,它什么都不做。

有没有那么简单的方法呢?

1 个答案:

答案 0 :(得分:0)

可以在src / main / resources中拥有自己的logback-spring.xml文件。作为一个工作示例,在这里拍摄一张pic,其中包含用于JSON日志输出的自定义appender:



<?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>
&#13;
&#13;
&#13;