2017-01-08 1 views
2

Ich erstelle eine Anwendung (Spring Boot 1.4.2), wo ich einem Administrator die Option zur Aktivierung von Syslog anbieten möchte, aber ich möchte ihn vermeiden Konfigurationsdateien manuell bearbeiten müssen - in diesem Fall logstash-spring.xml. Daher versuche ich zu verstehen, wie ich mit einer logback-spring.xml Datei als Baseline erreichen kann (zB Datei-basierte Log-Optionen, Ebenen usw. definieren - Einstellungen, die der Administrator nicht ändern soll) und zusätzlich zur Laufzeit eine Funktionalität zur Verfügung stellen Ein Administrator kann einen Syslog-Appender hinzufügen oder ändern.Logback mit Spring Boot - programmatisch die Konfiguration zur Laufzeit ändern Syslog Appender hinzufügen

ich aufgelistet habe, was ich als Anforderungen siehe:

  1. Die an den Logger vorgenommenen Änderungen beibehalten werden soll nach dem Frühlings Boot-Anwendung neu gestartet wird.
  2. Idealerweise werden die Syslog-Server-Informationen (Name, Port) in meiner Persistenzschicht (H2, Hibernate) gespeichert, aber ich bin mir nicht sicher, ob das Logging-Framework vor meiner Persistenzschicht injiziert wird?
  3. Die syslog appender, die ich von root-Logger referenziert werden hinzufügen möchten sollten, damit alle Pakete i Protokollierung für syslog würde konfiguriert haben (nicht sicher, ob dies nur ist „wie es standardmäßig funktioniert“)

Auch ich weiß nicht, ob ich logback-spring.xml einfach als ein normales XML-Objekt behandeln und zum Beispiel JAXB verwenden könnte, um diese Datei zu manipulieren und die autoscan-Funktion von Logback zu verwenden, um einfach die neuen Änderungen einzulesen?

Ich habe mit der Definition eines rumgespielt Logger@Bean:

@Bean 
public Logger logger() { 
    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); 
    // excluded implementation 
} 

Dies wird von Spring-Boot aufgenommen, aber das bringt mich auf die 2 Artikel i darüber aufgeführt haben, ich weiß nicht, wie oder wo ich Speichern Sie die Syslog-Serverinformationen, die der Administrator bereitstellen würde.

UPDATE:

schrieb ich die folgende, die die drei oben genannten Anforderungen jedoch erfüllen i Feedback über die tatsächliche Umsetzung zu schätzen wissen würde, wie ich bin sehr neu zu Frühling und Java.

GitHub repository with implementation - spring-boot-logback-syslog

+0

Ich denke, dass nur die ersten Annahmekriterien erreicht werden können, wenn Sie syslog appender bei jedem Start Ihrer Anwendung erstellen. –

Antwort

1

ich es geschafft, das Beispiel i in my Github repo in meinem benannten Anwendung geschrieben zu verwenden und mit, dass ich meine eigenen Fragen zu beantworten bin in diesem Repo die Umsetzung basiert. Bitte lesen Sie die README für vollständige Details, wie es implementiert wurde.

UPDATE: Im Rahmen des Frühlings-Boots 1.5.1 gibt es einen Aktuator, der die Protokollierungsstufe während der Laufzeit einstellen: Production Ready Loggers
Nicht unbedingt 100% zu diesem Thema, aber dies war eine der Voraussetzungen, ich hatte für die Implementierung sowie das Ändern von syslog-bezogenen Einstellungen.

Verwandte Themen