logback: Deux appenders, plusieurs enregistreurs de frappe, les différents niveaux
Je veux avoir deux fichiers journaux dans mon application (Spring Integration), debug.journal et principal.journal. Je veux courir principal.journal à un niveau d'informations et de débogage.journal à un niveau de DÉBOGAGE. C'est faisable avec des filtres sur les appenders. Je tiens à vous connecter à différents niveaux pour les appenders en fonction de la source. En d'autres termes
<logger name="org.springframework" level="ERROR">
<appender-ref ref="main" />
</logger>
<logger name="org.springframework" level="DEBUG">
<appender-ref ref="debug" />
</logger>
<logger name="com.myapp" level="INFO">
<appender-ref ref="main" />
</logger>
<logger name="com.myapp" level="DEBUG">
<appender-ref ref="debug" />
</logger>
Donc, pour résumer:
- Printemps enregistreur
- principal -> ERREUR
- debug -> DEBUG
- com.myapp enregistreur
- principal -> INFO
- debug -> DEBUG
À cause de cela, je dois avoir les bûcherons de l'exécution à DÉBOGUER et un seuil de filtre sur un appender n'est pas une bonne granularité assez.
Mise à jour plus de clarté à la question
Vous devez vous connecter pour publier un commentaire.
Créer un ThresholdLoggerFilter classe qui peut être mis sur un appender comme:
Le code suivant fonctionne
Vous pouvez également le faire un peu plus simplement, si vous êtes prêt à hériter de la racine de l'enregistreur, par exemple, ici, nous avons ajouter un supplément de logger les erreurs, qui se connecte sur la sortie stderr. Il est activé uniquement pour les particulier les bûcherons.
L'ajout d'une solution qui est plus simple que ce qui est déjà là
Aucune de ces solutions n'a fonctionné pour moi, puisque je ne suis pas à l'aide d'un framework comme d'Allumage ou de Printemps. J'ai donc fait quelque chose d'un peu plus simple que semble fonctionner à merveille. Bien que cette solution peut ne pas fonctionner pour l'OP, peut-être, il peut être utile pour quelqu'un qui veut quelque chose de pas trop volumineux.
Avec cette configuration, je suis en mesure de garder la console plutôt propre, lors de la sortie des instructions de DÉBOGAGE dans le fichier journal.
Viens de trouver une solution pratique à l'aide de logback éléments seulement ça fonctionne assez bien, essentiellement, vous devez avoir deux appenders, l'un avec la configuration par défaut et l'autre avec un filtre (dans mon exemple, je suis l'aide de la console):
À l'aide de Plusieurs bûcherons pour les différents messages sera comme ceci:
Vous pouvez utiliser un EvaluatorFilter. Un JaninoEventEvaluator aurait besoin d'une référence à janino (.jar) et un logback.xml exemple serait:
Cette approche utilise une expression de java dans l'expression de la balise (doit être xml échappé) pour évaluer la journalisation des événements et n'a pas besoin d'un custom de classe java à être écrite.