Я пытаюсь получить сценарий bash для входа в пользовательский файл журнала с помощью syslog в версии 6.5 Centos, но он всегда просто регистрируется в /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
Ваш сценарий вызывает logger (1), чтобы что-то записать в системный журнал. Таким образом, rsyslog будет видеть программу с именем «logger», выполняющую запись, а не «my_prog_test».
Для чего вы хотите добиться в журнале вызовов (1) с помощью «-p local0.notice» и в фильтре rsyslog.conf с помощью средства «local0» вместо имени программы «my_prog_test» ..
Согласно документации для rsyslog в моей системе (Debian Wheezy с rsyslog 7.4.4 из backports) последнее будет выражаться как:
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.