Journalisation Dropwizard: ajout d'un nouvel appender pour un enregistreur particulier
Je suis nouveau sur dropwizard et essaie de trouver des moyens pour configurer la journalisation mieux.
J'ai enregistré un nouveau logger dans un bundle comme suit:
Logger log = LoggerFactory.getLogger("mylogger");
log.info("this is a log from mylogger");
Maintenant, je suis à l'aide de ce lot dans un tas de services. Par défaut, l'ouverture de la session qui vient à travers cet enregistreur serait écrite dans le fichier de journal d'application.
Le problème, je vais essayer de résoudre est le suivant: je veux que tous les journaux écrits par mylogger(uniquement) pour aller vers un nouveau fichier. Il est assez starightforward pour ajouter un nouveau appender pour le service de fichier yml comme:
logging:
loggers:
appenders:
- type: file.
currentLogFilename: ./logs/example.log
archivedLogFilenamePattern: ./logs/example-%d.log.gz
archivedFileCount: 5
Mais cela voudrait dire que l'ensemble des journaux d'application devrait maintenant être écrite à l'exemple.journal. Je ne sais pas d'un moyen de spécifier un enregistreur spécifiquement pour cette appender qui n'affecte pas/alter déjà existants de l'exploitation forestière.
Quelqu'un peut me dire si il y a un moyen de le faire dans dropwizard? Merci!
source d'informationauteur nightcrawler
Vous devez vous connecter pour publier un commentaire.
Dans Dropwizard 0.9.0 (publié le 28 octobre 2015), ils ont ajouté le support pour différents enregistreur de appenders et la désactivation de l'enregistreur de l'additivité.
Pour atteindre ce que vous avez décrit, vous pouvez spécifier les éléments suivants dans votre fichier de configuration yaml -
Réglage de l'additif à false va empêcher l'enregistreur de données (ou quelque chose), de l'écriture à appenders qui sont hiérarchiquement au-dessus d'elle, y compris la racine de l'enregistreur.
Références -
Si vous êtes désireux personnalisé de votre enregistreur de données d'être la seule consigne dans le fichier journal, ainsi que dans le défaut appenders, vous pouvez créer votre propre appender basé sur la Dropwizard journalisation spec.
Exigences:
Personnalisé Appender usine
qui s'étend
io.dropwizard.logging.AbstractAppenderFactory
(dénommé MyCustomFactory)Configurations personnalisées peuvent être injectés ici à partir de votre .fichier yml par la création de JsonProperties ici, en utilisant Hibernate Annotations pour toutes les validations dont vous avez besoin sur le fichier de configuration:
Donner à la classe un
@JsonTypeName("YourAppenderName")
. C'est la façon dont vous faites référence à l'appender dans votre configuration.Cette classe a besoin d'accéder à toute configuration que vous souhaitez passer votre appender, puisque la fonction de cette classe est de créer votre appenders que Dropwizard à utiliser.
Personnalisé Appender
qui s'étend
ch.qos.logback.core.AppenderBase
(dénommé MyCustomAppender). Vous pouvez écrire votre propre, ou en utiliser une existante à partir de services comme les Loggly.À l'intérieur de l'appender, vérifiez où le journal est en provenance et à filtrer ce que vous voulez écrire dans un fichier.
Dire Dropwizard au sujet de votre nouvelle personnalisée en usine...
Vous avez besoin d'un fichier appelé
io.dropwizard.logging.AppenderFactory
placé dans votresrc/main/resources/META-INF/services/
répertoire.Le contenu de ce fichier est le nom complet (inclure des paquets) pour la réalisation de votre Usine. (Exemple: com.myCompany.appender.MyCustomFactory)
À l'aide de la coutume appender
Dans votre fichier yml ajouter le nouveau appender par le nom que vous avez spécifié:
Vous pouvez consulter le code dans dropwizard-bibliothèque de journalisation pour les échantillons.
De vérifier la
FileAppenderFactory
. C'est un bon point de référence.