2012-11-09 39 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