【发布时间】:2010-12-13 14:35:45
【问题描述】:
我正在开发一个使用 Spring 和 slf4j 的应用程序。该应用程序并行使用更多 ApplicationContext。 有什么办法可以让这些不同的 ApplicationContexts 使用不同的日志记录属性? 所以第一个 AC 可以登录到“x.txt”,而第二个 AC 可以登录到“y.txt”。
我不想使用更多的属性文件。适当的方法是在 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 配置来实例化一个 Logger 类。
我需要一种方法,其中每个 ApplicationContext 都有一个自己的 LoggerFactory 对象,该对象具有不同的属性(例如不同的目标输出)。所以我不必重写当前的代码。
我使用由同一个 xml 配置文件配置的ApplicationContexts。所以这些 ApplicationContexts 使用
相同的课程。因此,所有Logger 都是从LoggerFactory 实例化的,它们使用的类名相同。
所有 Logger 都由LoggerFactory.getLogger(MyClass.class) 形式实例化,因为这些类在所有ApplicationContext ("MyClass") 中都是相同的,我无法定义不同的名称Loggers。
感谢您的回复。
【问题讨论】: