Centos syslog가 bash 스크립트의 사용자 정의 파일에 기록되지 않습니다.

Centos syslog가 bash 스크립트의 사용자 정의 파일에 기록되지 않습니다.

Centos 릴리스 6.5에서 syslog를 사용하여 사용자 정의 로그 파일에 기록하기 위한 bash 스크립트를 얻으려고 하는데 항상 다음과 같이 기록됩니다 /var/log/messages.

Jan 12 09:54:47 localhost nbsp: Test message blah!

내가 도대체 ​​뭘 잘못하고있는 겁니까? 왜 에 로그인하지 않습니까 /var/log/my_prog_test.log? 내 구성과 파일은 다음과 같습니다.

/etc/rsyslog.conf(대부분의 파일이 생략됨):

if $programname == 'my_prog_test' then {
   action(type="omfile" file="/var/log/my_prog_test.log")
}

변경한 후 rsyslog.conf실행했습니다.

$ sudo /etc/rc.d/init.d/rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

... 구성 변경 후 rsyslog가 다시 시작되었습니다.

Bash 스크립트는 /home/nbsp/bin/my_prog_test다음과 같습니다:

#!/bin/bash

logger 'Test message blah!'

로그 파일 목록:

$ ls -la /var/log/ | grep my_prog_test
-rw-------.  1 root root      0 Jan 11 09:23 my_prog_test.log

심볼릭 링크...

$ ls -la /usr/bin/my_prog_test
lrwxrwxrwx. 1 root root 29 Jan 12 08:54 /usr/bin/my_prog_test -> /home/nbsp/bin/my_prog_test

프로그램 목록:

$ ls -la bin/my_prog_test
-rwxrwxr-x. 1 nbsp nbsp 50 Jan 12 09:09 bin/my_prog_test

답변1

귀하의 스크립트는 syslog에 무언가를 쓰기 위해 logger(1)을 호출하고 있습니다. 따라서 rsyslog에는 "my_prog_test"가 아닌 쓰기를 수행하는 프로그램 이름 "logger"가 표시됩니다.

"-p local0.notice"를 사용하고 rsyslog.conf에서 프로그램 이름 "my_prog_test" 대신 "local0" 기능을 사용하여 logger(1) 호출을 수행하려는 경우..

내 시스템의 rsyslog에 대한 문서(백포트의 rsyslog 7.4.4가 포함된 Debian Wheezy)에 따르면 후자는 다음과 같이 표현됩니다.

  if $syslogfacility-text == 'local0' then {
     action(type="omfile" file="/var/log/my_prog_test.log")
  }

이 경우에도 작동하며 더 간단합니다.

  local0.* /var/log/my_prog_test.log

시스템에서 syslog 기능 local0이 이미 이러한 목적으로 사용되고 있는 경우 대신 local1부터 local7까지 사용할 수 있습니다.

관련 정보