例には次の行があります/etc/rsyslog.conf
。
$template MyFmt, "%timereported:::date-year%%timereported:::date-month%%timereported:::date-day%_%timereported:::date-hour%%timereported:::date-minute%%timereported:::date-second% %fromhost-ip% %fromhost% %HOSTNAME% %syslogtag%%programname%%msg:::drop-last-lf%\n"
auth,authpriv.* |/path/to/log;MyFmt
syslog送信者がコンパイルされたC ++プログラムであるとします。つまり、次のようになります。
// main.cpp
#include <ctime>
#include <syslog.h>
int main( int argc, char* artv[] )
{
openlog( "LogTest[456]", 0, LOG_AUTH );
syslog( LOG_AUTH | LOG_INFO, "hello, world %zu", size_t( time( NULL ) ) );
closelog();
return 0;
}
もしそうなら、あなたのアイテムの合計値/var/log/secure
が" "であるのはなぜですか?これは必ずしもプログラムが「」を呼び出すことを意味しますか?%syslogtag%
%programname%
(none)
openlog( "(none)", ... );
openlog()
最初のパラメータ値(空の文字列""
)とNULL
。 。明示的に…?で指定する以外に、「」値が出る他の方法は思い出されません。%syslogtag%
%syslogtag%
a.out
(none)
openlog()
編集する:明確に言うと:上記のプログラム例確かに結果は値%syslogtag%
" (none)
"です。結果は予想値 " LogTest[456]
"です。私の質問はもっとです。%syslogtag%
""で明示的に指定されていない値" "が発生した結果は何ですか?(none)
openlog()
(私は仕事で観察している動作を理解しようとしています。サーバー上で実行されているrsyslogdは、上記のようにクライアントからsyslogを受け取り、それをテンプレート形式でパイプに書き込みます。一部作成されたコンテンツの値は%syslogtag%
" (none)
"です。これの根本的な理由を知りたいです。 )