rsyslog %syslogtag%에 "(없음)"이 표시되는 이유는 무엇입니까?

rsyslog %syslogtag%에 "(없음)"이 표시되는 이유는 무엇입니까?

예제에 다음 줄이 제공됩니다 /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)"입니다. 이에 대한 근본적인 이유를 알고 싶습니다. )

관련 정보