Dropwizard Anmeldung: hinzufügen neuer appender für einen bestimmten logger
Ich bin neu in dropwizard und versuche herauszufinden, Möglichkeiten zum konfigurieren der Protokollierung besser.
Ich habe mich registriert, einen neuen logger in einem bundle wie so:
Logger log = LoggerFactory.getLogger("mylogger");
log.info("this is a log from mylogger");
Jetzt bin ich mit dieser Bündel in ein Bündel von services. Standardmäßig jedem Protokoll, das kommt durch diese logger geschrieben werden, um die Anwendung log-Datei.
Das problem versuche ich zu lösen: ich möchte, dass alle Protokolle geschrieben von mylogger(nur) zu gehen, um eine neue Datei. Es ist ziemlich starightforward hinzufügen, um einen neuen appender der service yml-Datei wie:
logging:
loggers:
appenders:
- type: file.
currentLogFilename: ./logs/example.log
archivedLogFilenamePattern: ./logs/example-%d.log.gz
archivedFileCount: 5
Aber das würde bedeuten, dass alle Anwendungsprotokolle würde jetzt so geschrieben sein, Beispiel.log. Ich weiß nicht, wie angeben, einen logger, die speziell für diesen appender, die nicht beeinflussen/ändern bereits vorhandene logging.
Kann mir jemand sagen, ob es einen Weg gibt, dies zu tun in dropwizard? Danke!
InformationsquelleAutor nightcrawler | 2015-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Dropwizard 0.9.0 (veröffentlicht am Oct 28th 2015), haben Sie Hinzugefügt Unterstützung für einzelne logger appenders und deaktivieren logger additivität.
Zu erreichen, was Sie beschrieben haben, können Sie den folgenden in Ihr yaml-Konfigurationsdatei -
Einstellung Additiv auf false wird verhindert, dass die logger (oder etwas unter) schreiben, appenders, die hierarchisch oben, einschließlich der root-logger.
Referenzen -
InformationsquelleAutor Denny Abraham Cheriyan
Wenn Sie wollen, Ihre benutzerdefinierte logger das einzige zu sein, die Protokolle in der log-Datei, als auch in der Standard-appenders, könnte man erstellen Sie Ihre eigenen appender auf der Grundlage der Dropwizard Protokollierung spec.
Anforderungen:
Benutzerdefinierte Appender Fabrik
erweitert
io.dropwizard.logging.AbstractAppenderFactory
(bezeichnet als MyCustomFactory)Benutzerdefinierte Konfigurationen können injiziert werden hier von Ihr .yml-Datei, indem Sie JsonProperties hier mit Hibernate Annotations für alle Validierungen müssen Sie auf die Konfiguration-Datei:
Geben Sie der Klasse eine
@JsonTypeName("YourAppenderName")
. Dies ist, wie Sie auf den appender in Ihrer Konfiguration.Dieser Klasse zugreifen muss, jede Konfiguration, die Sie weitergeben wollen an Ihre appender, da die Funktion dieser Klasse ist das erstellen Ihrer appenders, die Dropwizard verwenden.
Benutzerdefinierte Appender
erweitert
ch.qos.logback.core.AppenderBase
(Bezeichnet als MyCustomAppender). Sie können schreiben Sie Ihre eigenen, oder verwenden Sie eine vorhandene aus von Dienstleistungen wie Loggly.Innerhalb der appender, prüfen Sie, wo das Protokoll kommt, und filtern, was Sie wollen, um eine Datei zu schreiben.
Zu sagen Dropwizard über Ihre neue benutzerdefinierte factory...
Müssen Sie eine Datei namens
io.dropwizard.logging.AppenderFactory
sich in Ihremsrc/main/resources/META-INF/services/
Verzeichnis.Der Inhalt dieser Datei ist der vollständige name (inklusive packages) für Ihre maßgeschneiderte Anlage. (Beispiel: com.MeineFirma.appender.MyCustomFactory)
Mithilfe der benutzerdefinierten appender
In deine yml-Datei fügen Sie die neuen appender durch den Namen, den Sie angegeben:
InformationsquelleAutor cbradsh1
Finden Sie den code in dropwizard-logging-Bibliothek für die Proben.
Überprüfen Sie die
FileAppenderFactory
. Es ist ein guter Bezugspunkt.InformationsquelleAutor Chathurika Sandarenu