2012-11-09 42 views
3

有没有一种方法来分解和参数化Logback XML配置的重复部分?除了文件名外,我有许多不同的滚动文件appender配置基本相同。我将它与“一堆记录器”一起使用,并将其“关联性”关闭,以便我可以将堆栈的不同部分重定向到不同的文件。这增加了由许多几乎相同的段组成的繁琐且长的配置文件。Logback配置:分解可重用部分

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

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

但据我了解,这是一厢情愿的想法。有没有另外一种方式通过模板,宏,函数或者什么来分解Logback的配置?

+1

我创建了一个问题来在Logback中添加对此的支持:http://jira.qos.ch/browse/LOGBACK-1104 –

回答

2

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

也许最简单的方法是在某些资源文件中定义变量,比如说每个应用程序捆绑了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文件与Web应用-A捆绑在一起。

root.level=WARN 

你可以捆绑logback.xml为您的各种应用共同神器的资源。

+1

我想要日志配置文件驻留在配置目录中在捆绑应用程序之外。我以编程方式为此目的加载配置。这个机制是依赖于自动配置文件发现还是我可以在不调用'reset'的情况下多次调用'configurator.setContext(context)'几次,然后加载多个配置文件?除非我在这里丢失了一些东西,否则我仍然看不到一种方法来参数化从文件外部加载的配置文件。我想我总是可以对它进行模板化,并在运行中生成配置。 –

+0

如果以编程方式调用joran,则更容易。去尝试一下。 – Ceki

+0

如何在logback.groovy中使用它? – Chinaxing