【问题标题】:Extend logback configuration扩展 logback 配置
【发布时间】:2025-12-03 15:00:01
【问题描述】:

有没有办法将多个 logback 配置文件组合在一起?假设有一个包含多个项目的父项目,我希望所有项目都具有相同的基本配置或基本 logback.xml 文件,但我想为每个项目添加或更改一些内容。这个可以吗?

其实不是很了解,但是听说log4j可以借助属性来做这样的事情。

【问题讨论】:

标签: java logback slf4j


【解决方案1】:

我认为您正在寻找文件包含功能。在一个以<included> 元素为根的文件中创建通用基本功能,然后使用<include> 元素从您的各种配置文件中包含它。

这在手册的Configuration 章节中有一个示例:

Joran 支持包含来自另一个文件的配置文件的部分内容。这是通过声明一个<include> 元素来完成的,如下所示:

示例:文件包含 (logback-examples/src/main/resources/chapters/configuration/ containsConfig.xml)

<configuration>
  <include file="src/main/java/chapters/configuration/includedConfig.xml"/>

  <root level="DEBUG">
    <appender-ref ref="includedConsole" />
  </root>

</configuration>

目标文件的元素必须嵌套在 &lt;included&gt; 元素中。例如,ConsoleAppender 可以声明为:

示例:文件包含 (logback-examples/src/main/resources/chapters/configuration/includedConfig.xml)

<included>
  <appender name="includedConsole" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>"%d - %m%n"</pattern>
    </encoder>
  </appender>
</included>

同样,请注意强制性的&lt;included&gt; 元素。

要包含的内容可以作为文件、资源或 URL 引用。

  • 作为文件: 要包含文件,请使用 file 属性。您可以使用相对路径,但请注意,当前目录由应用程序定义,不一定与配置文件的路径相关。
  • 作为资源: 要包含资源,即在类路径中找到的文件,请使用 resource 属性。
    <include resource="includedConfig.xml"/>
    
  • 作为网址: 要包含 URL 的内容,请使用 url 属性。
    <include url="http://some.host.com/includedConfig.xml"/>
    

【讨论】: