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:
- Die an den Logger vorgenommenen Änderungen beibehalten werden soll nach dem Frühlings Boot-Anwendung neu gestartet wird.
- 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?
- 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
Ich denke, dass nur die ersten Annahmekriterien erreicht werden können, wenn Sie syslog appender bei jedem Start Ihrer Anwendung erstellen. –