3

有没有办法分解和参数化 Logback XML 配置的重复部分?除了文件名之外,我有许多不同的滚动文件附加程序配置基本相同。我将它与一堆关闭了“可加性”的记录器一起使用,这样我就可以将堆栈的不同部分重定向到不同的文件。这增加了一个由许多几乎相同的段组成的繁琐而冗长的配置文件。

我之前使用过 Logback 的<include>功能,但它并没有解决这个重用问题,因为我无法参数化包含的配置。我希望这样的功能看起来类似于:

<include resource="file-appender.xml">
    <property name="filePath" value="/where/logs/go" />
    <property name="baseLogger" value="com.mycompany.thatpartofthestack" />
</include>

但据我了解,这是一厢情愿。是否有另一种方法可以通过模板、宏、函数或诸如此类的方式来分解 Logback 的配置?

4

1 回答 1

2

尝试在本地和/或上下文范围内使用变量替换

也许最简单的方法是在某个资源文件中定义变量,比如logback.properties与每个应用程序捆绑在一起。此外,每个应用程序都会携带一个logback.xml文件导入logback.properties.

<configuration debug="true">
  <property resource="logback.properties" />
  <!-- set root level as given by the value of the root.level variable -->
  <!-- if root.level is undefined default to DEBUG -->
  <root level="${root.level:-DEBUG}"/>
</configuration>

如果您希望在 webapp-A 中将根级别设置为 WARN,只需在logback.properties与 webapp-A 捆绑的文件中添加以下行。

root.level=WARN

您可以将资源捆绑logback.xml到各种应用程序通用的工件中。

于 2012-11-09T08:54:14.530 回答