Bonjour
j'ai un programme lançant plusieurs threads manipulant chacun un objet.
Les objets en question contiennent un id et une date, et quand j'essaie d'afficher les enchainements il est clair que log4j affiche un peu n'importe quoi (sur les dates)
Par contre, en mode débug, lorsque je tente d'afficher les valeurs, elles sont correctes.
Je me suis rendu compte que le Logger avait le même ID dans chaque thread.
Le logger est déclaré ainsi:
private final Log logger = LogFactory.getLog(MaClasse.class);
Vu que l'entrée dans la fonction getLog est la même j'imagine que c'est normal qu'il s'agisse du même logger, mais je ne comprends pas ce mélange dans les informations.
public fonction(final MonObjet IDObjet){
this.logger.info(MonObjet.getId() + "// " + MonObjet.getDate());
}
Je ne comprends vraiment pas le souci.
Comment faire pour créer autant d'instances de log qu'il y a de threads?
(Remarque: Je n'ai aucun problème en faisant appel a System.out.println())
Merci d'avance
Partager