Rsyslog и локальный *:
Rsyslog имеет возможности от local0
до local7
, которые являются «настраиваемыми» неиспользуемыми функциями, которые syslog предоставляет пользователю. Если разработчик создает приложение и хочет, чтобы оно регистрировалось в системном журнале, или если вы хотите перенаправить вывод чего-либо в системный журнал (например, журналы Apache), вы можете отправить его на любое из local#
объектов. Затем вы можете использовать /etc/syslog.conf
(или /etc/rsyslog.conf
) для сохранения журналов, отправляемых на этот local#
, в файл или для отправки его на удаленный сервер (источник).
Конфигурация:
Меньше /etc/rsyslog.conf
local0.* /var/log/local.log
Это правильно, и он назначает файл журнала /var/log/local.log
приложениям, которые регистрируются на local0. В качестве другого примера можно использовать kern.=warn -/var/log/kernel/warnings.log
для регистрации предупреждений ядра.
Приложение / скрипт Python:
#!/usr/bin/python3
import sys, syslog
syslog.openlog(ident="MY_SCRIPT", facility=syslog.LOG_LOCAL0)
for line in sys.stdin:
syslog.syslog(syslog.LOG_WARNING, f"Message {line}\n\n")
Исходный код действительно работает, и, как указано в комментариях, это может использоваться как альтернатива, и переменная {line}
была добавлена в соответствии с предложением @ apoorva-kamath ...
Важная сторона здесь - это связь между скриптом Python и Rsyslog.
Также, как указано в команде, попробуйте перезагрузить rsyslog systemctl restart rsyslog
; вы также можете проверить конфигурацию Rsyslog с помощью rsyslogd -N1
и проверить, правильно ли работает rsyslog с помощью:
sudo cat /var/log/messages | grep rsyslog
В зависимости от контекста выполнения скрипта Python связь с Rsyslog может завершиться ошибкой, требуются дополнительные сведения о вашей конфигурации, в противном случае вы можете попробовать (из контекста скрипта):
logger -p local0.error "TroubleshootingTest"
И, наконец, проверьте передачу данных с помощью:
sudo netstat -taupn | grep syslog
Документация:
Дополнительные сведения о системном журнале Python, устранение неполадок Rsyslog и Средство Rsyslog
person
intika
schedule
02.06.2020
systemctl restart rsyslog
- person apoorva kamath   schedule 02.06.2020syslog.syslog(syslog.LOG_WARNING, f"Message\n\n")
должно бытьsyslog.syslog(syslog.LOG_WARNING, f"Message {line}\n\n")
- person apoorva kamath   schedule 02.06.2020