0

Javaで2つのApacheSyslogAppenderを使用してSyslogにメッセージを送信しています。私のConversionPatternsは次のとおりです。

Instance-${jboss.server.name}: %d %-5p [%c] (%t) %m%n
Application-MyApp: ${jboss.server.name} - %d %-5p [%c] (%t) %m%n

次に、異なるLog4Jカテゴリを構成して、一方または両方のアペンダーに異なるメッセージを送信します。

私のsyslog構成ファイルには、次のものがあります。

destination d_jboss_appli_integ {
    file("/var/log/syslog-ng/JBoss/intg/Applications/$PROGRAM/$YEAR$MONTH$DAY.log"
    template("Application-$PROGRAM: $MSG\n"));
};
destination d_jboss_instance_integ {
    file("/var/log/syslog-ng/JBoss/intg/Instances/$PROGRAM/$YEAR$MONTH$DAY.log"
    template("Instance-$PROGRAM: $MSG\n"));
};

このように、私が欲しいのは、JBossサーバーの名前に置き換えられ/var/log/syslog-ng/JBoss/intg/Applications/MyApp/たファイル/var/log/syslog-ng/JBoss/intg/Instances/${jboss.server.name}/にログインすることです。${jboss.server.name}

Application-MyApp代わりに、とというフォルダにログが書き込まれますInstance-${jboss.server.name}

Syslogでtemplate()ディレクティブを使用して、メッセージからの値を適切に抽出し、それぞれ$PROGRAMMyAppとを取得することは可能${jboss.server.name}ですか?

前もって感謝します

リッチ

ps:明確にするために、${jboss.server.name}どこでも適切に拡張されています。

4

1 に答える 1

0

解決策を見つけました。メッセージの形式を変更して、値として必要な値が$PROGRAM最初のコロンの前の唯一の値になるようにします。

したがって、次のようになります。

Instance-${jboss.server.name}: %d %-5p [%c] (%t) %m%n
Application-MyApp: ${jboss.server.name} - %d %-5p [%c] (%t) %m%n

になる:

${jboss.server.name}:Instance: %d %-5p [%c] (%t) %m%n
MyApp:Application:${jboss.server.name}: - %d %-5p [%c] (%t) %m%n

そうすれば、テンプレートは私が望むものを正しく返します。

于 2010-08-12T08:58:11.933 に答える