Logback配置:分解可重复使用的部件

时间:2012-11-09 07:36:41

标签: logback

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

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

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

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

1 个答案:

答案 0 :(得分:2)

尝试在本地和/或上下文variable substitution中使用scope

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

logback.properties

如果您希望在webapp-A中将根级别设置为WARN,只需在与webapp-A捆绑的<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> 文件中添加以下行。

logback.properties

您可以将root.level=WARN 作为资源捆绑到各种应用程序通用的工件中。