La solution n'a en fait rien à voir avec Guice, mais est plutôt basée sur la façon dont les classes de journalisation fonctionnent en Java.
Bûcherons sont créés dans une hiérarchie, donc, enregistreur x.y.z
est un enfant de x.y
, tout le chemin jusqu'à la chaîne de l'enregistreur racine dont le nom est la chaîne vide . Chaque enregistreur hérite des propriétés, comme son niveau de consignation, de son parent.
Ainsi, afin de définir le niveau globalement (ou pour les gestionnaires dans le monde) journal, les mettre simplement sur l'enregistreur racine:
LogManager logManager = LogManager.getLogManager();
Logger rootLogger = logManager.getLogger("");
rootLogger.setLevel(Level.FINEST);
rootLogger.addHandler(new ConsoleHandler());
Une fois cela fait, les bûcherons injectés auront leurs propriétés dérivées de l'enregistreur de racine et tous les enregistreurs parents qui peuvent exister. Pour plus d'informations sur les bases, voir le LogManager documentation.
Une propriété config
existe également. Selon la documentation de LogManager:
Une propriété "config". Cette propriété est destinée à permettre l'exécution arbitraire du code de configuration . La propriété définit un espace ou une virgule liste séparée des noms de classe. Une nouvelle instance sera créée pour chaque classe nommée . Le constructeur par défaut de chaque classe peut exécuter du code arbitraire de mettre à jour la configuration journalisation , comme enregistreur réglage niveaux, l'ajout de gestionnaires, en ajoutant filtres, etc.
Cela implique qu'il existe plusieurs solutions à la problème que j'aurais pu aussi utiliser une classe de configuration.