2017-08-23 2 views
1

J'ai un ensemble d'applications installées sur un serveur que je veux commencer à envoyer des journaux via syslog à un serveur Logstash distant. Pour cela, j'ai créé un seul fichier de configuration de Logback externe contenant un SyslogAppender pointant vers le serveur distant souhaité.Fichier d'initialisation et de journalisation Spring print.config avec les propriétés printanières

Comme plusieurs applications se connecteront sur le même serveur, j'ai changé le modèle de journal pour être les suivantes:

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

server_instance et application_name sont des arguments d'option de ligne de commande prévu au démarrage . Maintenant, il suffit de définir la propriété logging.config de toutes mes applications pointant vers le même fichier de configuration de Logback, et toutes les applications commencent à envoyer les journaux en utilisant le modèle spécifié au serveur souhaité. Cette partie fonctionne comme un charme.

Mais le seul problème que j'ai est que Logback n'est pas en mesure de déterminer la server_instance et la application_name propriétés et ils apparaissent comme [server_instance_IS_NOT_DEFINED] et [application_name_IS_NOT_DEFINED] respectivement. Puis-je y parvenir d'une manière ou d'une autre en utilisant un seul fichier de configuration externe?

Répondre

1

Le journal n'est pas capable de voir les arguments de ligne de commande; ceux-ci sont vus par le seul printemps.

Moved ces options arguments aux propriétés du système de ligne de commande (par exemple "-Dserver_instance" et "-Dapplication_name" au lieu de "--server_instance" et "--application_name") et maintenant tout est fonctionne comme prévu.