Welche Optionen stehen zum Abrufen von Spring-Managed-Beans in einem Log4J-Appender in einer Spring-Managed-Webanwendung zur Verfügung?

Mein aktueller Build-Lead hat theoretisch eine großartige Idee: Erstellen Sie einen benutzerdefinierten Log4J-Appender, der Spring-Managed-Beans verwendet und Fehler in verschiedenen anderen Quellen als nur in der Standardprotokolldatei protokolliert. Abgesehen von der Erstellung eines Singletons, das beim Start mit dem Anwendungskontext initialisiert wird (Code innerhalb eines Augenblicks), scheint mir jedoch keine andere Möglichkeit zum Abrufen einer Spring Managed Bean in einem Log4J-Appender in den Sinn zu kommen.

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;
    }
}

Im Idealfall können diese Eigenschaften wie bei Beans im Frühjahr über die Abhängigkeitsinjektion festgelegt werden. Die Bean-Referenzen ändern sich nie, unabhängig davon, wie viele Appender initialisiert wurden. Irgendwelche Ideen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage