2017-08-23 1 views
1

Ich habe eine Reihe von Anwendungen auf einem Server installiert, die ich starten Logs durch Syslog zu einem Remote-Logstash-Server senden möchte. Dafür habe ich eine einzige externe Logback-Konfigurationsdatei erstellt, die einen SyslogAppender enthält, der auf den gewünschten Remote-Server verweist.Spring Boot und Logging logging.config Datei mit Spring-Eigenschaften Platzhalter

Da mehrere Anwendungen auf demselben Server einzuloggen, habe ich das Log-Muster geändert, die folgenden sein:

<suffixPattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [${server_instance}] [${application_name}] %p ${PID:- } --- [%15.15t] %logger : %m%n</suffixPattern> 

Wo server_instance und application_name Befehlszeilenoption Argumente beim Start zur Verfügung gestellt werden .

Jetzt setze ich einfach die logging.config Eigenschaft aller meiner Anwendungen, die auf die gleiche Logback-Konfigurationsdatei zeigen, und alle Anwendungen beginnen, die Protokolle mit dem angegebenen Muster an den gewünschten Server zu senden. Dieser Teil wirkt wie ein Zauber.

Aber das einzige Problem, das ich habe ist, dass Logback nicht in der Lage ist, die server_instance und die application_name Eigenschaften und sie erscheinen als [server_instance_IS_NOT_DEFINED] und [application_name_IS_NOT_DEFINED] jeweils zu bestimmen.

Kann ich dies irgendwie mit einer einzigen externen Konfigurationsdatei erreichen?

Antwort

1

Logback kann keine Befehlszeilenargumente anzeigen. diese werden vom Frühling allein gesehen.

Verschoben diese Befehlszeilenoptionen Argumente zu Systemeigenschaften (zB „-Dserver_instance“ und „-Dapplication_name“ statt „--server_instance“ und „--application_name“) und jetzt ist alles Arbeiten wie erwartet.

Verwandte Themen