我目前的构建负责人在理论上有一个好主意 - 构建一个自定义 Log4J 附加程序,该附加程序接受 Spring 管理的 bean 并使用它们将错误记录到各种其他来源,而不仅仅是标准日志文件。然而,除了创建一个在启动时使用应用程序上下文初始化的单例(代码稍后),我似乎想不出在 Log4J appender 中检索 Spring 托管 bean 的任何其他选项。
public class SpringSingleton implements ApplicationContextAware {
private static ApplicationContext context;
public SpringSingleton() {
super();
}
public static ApplicationContext getContext() {
return SpringSingleton.context;
}
public void setApplicationContext(ApplicationContext context) {
if(SpringSingleton.context != null) {
throw new IllegalStateException("Context is already set!");
}
SpringSingleton.context = context;
}
}
理想情况下,这些属性可以像 Spring 中的 bean 一样通过依赖注入来设置——bean 引用永远不会改变,无论有多少 appender 被初始化。有任何想法吗?