有没有办法分解和参数化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的配置?
答案 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
作为资源捆绑到各种应用程序通用的工件中。