Я написал приложение на Python, которое пишет сообщения через rsyslog. Я настроил rsyslog для записи в пользовательский файл журнала на /var/log/my_custom_log.log
где мои записи подходят хорошо.
Мой по умолчанию syslog.conf
не модифицирован. Мой /etc/rsyslog.d/00-myrules.conf
как следует:
:msg, contains, "Transmission" /var/log/transmission.log
& ~
Я также не понимаю, что делает & ~ в конце, но, похоже, без него он не работает.
Все, что я хочу, - это иметь возможность писать журналы на /home/me/logs/my_tests.log
. Когда я тестирую свое приложение, мне нужно убедиться, что определенные вещи записываются в журнал определенное количество раз. Раньше я писал свои сообщения в текстовый файл в моем домашнем каталоге, проверял, был ли этот файл правильным, а затем удалял его для каждого теста. Теперь мне нужно сделать то же самое, но с rsyslog. Я провожу свои тесты как пользователь.
Я хочу, чтобы обычные журналы записывались в /var/log/my_app_log.log
, это хорошо.
ps aux | grep "rsyslog"
, он возвращает это /usr/sbin/rsyslogd -n
работает под корень, который (поправьте меня, если я ошибаюсь) должен иметь возможность записывать в подкаталоги мой домашний каталог, независимо от того, кому он принадлежит.РЕДАКТИРОВАТЬ: После дальнейшего обсуждения мы решили, что было глупо иметь логи вне /var/log
. В конце концов, для этого он нужен.
С участием помощь этого поста, Я обнаружил, что работает ls -Z
раскрывает контексты SELinux. Как предполагалось на плакате, я скопировал контекст из /var/logs
в каталог журналов в моем доме, и я получаю желаемые результаты.
Однако я понимаю, что это не идеально, как описано в принятом ответе в первом связанном вопросе, поскольку он не является пуленепробиваемым / долговечным. К сожалению, я недостаточно разбираюсь в SELinux, чтобы подробно остановиться на этом, и используемый метод будет работать в моей небольшой среде.