3 votes

Dans Spring, comment configurer java.util.Logging pour qu'il soit autofiltré ?

Dans notre application web, nous utilisons java.util.Logging (JULI, en fait, puisque nous déployons vers Tomcat 6). La journalisation est configurée par un fichier logging.properties dans WEB-INF/classes, à la manière de ce .

J'aimerais configurer l'enregistreur pour qu'il puisse être auto-connecté, quelque chose comme :

@Autowired
private Logger mylogger;

J'ai cherché dans les forums Spring, sur le Web et, bien sûr, sur Stack Overflow, mais je n'ai pas trouvé comment configurer cette fonction. J'apprécierais toute aide à ce sujet.

Merci !

3voto

Donal Fellows Points 56559

Une façon de procéder serait d'utiliser le Style de configuration Java donc vous auriez un haricot comme celui-ci :

@Configuration
public class LoggerProvider {
    @Bean
    public Logger logger() {
        return Logger.getLogger("foobar.whatever");
    }
}

Cela pourrait ensuite être intégré au reste de l'application comme d'habitude.

2voto

mkro Points 1480

Afin d'utiliser @Autowired sur quelque chose (un bean), vous devez faire en sorte que ce bean soit contrôlé par Spring. Il y a plusieurs façons de le faire et elles dépendent du cadre de journalisation que vous voulez utiliser.

Je crains qu'il n'y ait pas de solution unique.

En général, vous utiliserez un initialisateur statique fourni par le cadre de journalisation de votre choix ou une abstraction de celui-ci (par exemple, commons-logging).

J'ai trouvé une référence dans laquelle une annotation @Logger est introduite, peut-être cela vous oriente-t-il dans une direction qui vous convient :

http://jgeeks.blogspot.com/2008/10/auto-injection-of-logger-into-spring.html

1voto

Javi M Points 91

Afin que Logger soit injectable avec @Autowired vous devez disposer d'une classe de configuration dans laquelle vous avez configuré tous les Beans avec lesquels vous utilisez la fonction @Autowired . Cette classe sera marquée par @Configuration . Vous devez y mettre les éléments suivants @Bean dans votre configuration :

@Configuration
public class WebConfiguration {

    @Bean
    @Scope("prototype")
    public Logger produceLogger(InjectionPoint injectionPoint) {
        Class<?> classOnWired = injectionPoint.getMember().getDeclaringClass();
        return LoggerFactory.getLogger(classOnWired);
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X