我正在使用Spring和slf4j的應用程序。該應用程序並行使用更多的ApplicationContext。 有沒有辦法讓這些不同的ApplicationContexts使用不同的日誌記錄屬性? 因此,第一個AC可以登錄到「x.txt」,而第二個登錄到「y.txt」。Spring:針對不同ApplicationContext的不同日誌記錄行爲
我不想使用更多的屬性文件。適當的方法是在Spring XML配置文件中定義一個Logger Bean,我可以在其中爲相應的屬性設置不同的輸出目標。
例如:
<bean id="LoggerBean" class="???">
<property name="target" value="${target}" />
</bean>
在這裏,我可以操縱來自源的目標變量,這將是非常方便的。
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
所以LoggerFactory.getLogger
將使用LoggerBean
bean的配置實例化一個記錄器類。
我需要一個方法,其中每個ApplicationContext都有自己的LoggerFactory
具有不同屬性(如不同的目標輸出)的對象。所以我不必重寫當前的代碼。
我使用ApplicationContexts
由相同的xml配置文件配置。所以這些ApplicationContexts使用 相同的類。正因爲如此,所有Logger
從LoggerFactory
實例化他們英寸 所有記錄儀使用LoggerFactory.getLogger(MyClass.class)
形式實例化的同一類的名稱,因爲這些類在所有ApplicationContext
(「MyClass的」),我不能定義不同的名稱Loggers
相同。
感謝您的回覆。
private static final Logger log = LoggerFactory.getLogger(MyClass.class); 這裏org.slf4j.LoggerFactory的靜態方法會生成一個org.slf4j.Logger類。 我需要一個方法,其中每個ApplicationContext都有一個具有不同屬性的LoggerFactory對象(如不同的目標輸出)。 因此,我不必重寫當前的代碼,只需將導入語句交換到我的LoggerFactory實現。 – Sharp 2010-12-13 15:34:18
更改FactoryBean返回SLF4J記錄器 – 2010-12-14 09:57:06