
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까지 사용할 수 있습니다.