
私は syslog モジュールを初めて使用します。テンプレートでこのパラメータを使用して、構造化データを含むメッセージをログに記録しようとしています。しかし、構造化データに対して null 値が表示されます。私は rsyslogd 5.8.11 と rsyslogd 4.8.4 を使用していますが、どちらのバージョンでも同じ結果が得られます。
私は次のテンプレートを使用しています:
"<%PRI%>%TIMESTAMP:::date-rfc3339%%HOSTNAME%%syslogtag%%APP-NAME%%PROCID%%MSGID% %msg% %STRUCTURED-DATA%\n”
取得するメッセージ形式は以下のとおりです。
<142> 2015-01-29T06:43:53.081641-05:00 localhost login[2116]: login 2116 - [2116 : 2116 INFO]SERIAL Login from IP:127.0.0.1 user:admin -
何が間違っているのか誰か教えてもらえますか? ログ ファイルに SD-ID、SD-PARAM を含む構造化データを含むメッセージをログに記録したいだけです。
答え1
rsyslog は構造化されたデータを含む RFC5424 メッセージを出力できます。
しかし、RFC5424メッセージを送信する方法もありますか?にrsyslog? -- UDP または TLS 経由で直接メッセージをログに記録する場合は動作するはずです。ただし、従来の BSD Syslog 関数経由でログに記録する場合は、構造化されたデータも MSGID もありません。(私の知る限り、NetBSD は RFC5424 対応の libc で、syslog() 関数関数。)
答え2
私もこれを実現しようとしています。テンプレートを使用して RFC5424 メッセージ形式を発行する方法を見つけることができましたRSYSLOG_SyslogProtocol23Format
。ただし、構造化データにフィールドを追加する方法がわかりません。また、参考までに、syslog-ng を使用して RFC5424 形式の送受信に成功しています。