Mon lead de construction actuel a une bonne idée en théorie - construire un appender Log4J personnalisé qui prend en charge les beans gérés par Spring et les utilise pour consigner les erreurs dans d'autres sources que le fichier journal standard. Cependant, en dehors de la création d'un singleton initialisé au démarrage avec le contexte de l'application (code en un instant), je ne peux pas penser à d'autres options de récupération d'un bean géré Spring dans un appender Log4J.Quelles sont les options disponibles pour récupérer les beans gérés par Spring dans un Log4J Appender dans une application Web gérée par Spring?
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;
}
}
Idéalement, ces propriétés pourraient être définies comme les haricots au printemps par injection de dépendance - les références de haricots ne changeront jamais, peu importe combien de appenders sont initialisés. Des idées?
Oooh ... J'aime l'idée d'auditeur. Je vais transmettre cela. J'attendrai des réponses supplémentaires, cependant, car vous ne semblez pas faire mal pour le représentant :) +1. – MetroidFan2002
Hey, hé - pour citer à tort Rich Texan de Simpsons (http://www.imdb.com/title/tt1023430/quotes) "J'ai travaillé dur pour mal-obtenir ce représentant" :-) – ChssPly76
Bonnes choses. Apparemment, nous avons déjà une implémentation de BeanFactoryPostProcessor qui permet de définir un tableau d'appenders supplémentaire, donc nous allons l'utiliser, mais comme personne n'a répondu à la question et cela correspond certainement, vous obtenez plus de rep :) – MetroidFan2002