LINUX.ORG.RU

python systemd unit как писать в лог?

 , ,


1

1

Есть юнит, запускается от пользователя user. Внутри скрипта print('some'). Как эти принты увидеть в /var/log/syslog или в /var/log/unite/some.log посредством systemd?

[Unit]
Description=Gevent websocket runner

[Service]
Type=simple
User=user
ExecStart=/home/user/serve.py
WorkingDirectory=/home/user/

[Install]
WantedBy=multi-user.target



Последнее исправление: Xwo (всего исправлений: 1)

Как эти принты увидеть в /var/log/syslog или в /var/log/unite/some.log?

systemd не умеет писать в /var/log/syslog или ещё куда-то там. Твои принты — в журнале (journalctl). Если так хочется видеть их именно в текстовых файлах, установи реализацию syslog и натрави её на журналы тем или иным способом.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

journalctl -u unite не показывает эти принты(показывает только start/stop unite. Как посмотреть именно print's самого скрипта?

Xwo
() автор топика
Последнее исправление: Xwo (всего исправлений: 1)

Нужен systemd>236. Скрипт должен валить все в stdout/stderr. Тогда:

[Unit]
Description=Gevent websocket runner

[Service]
Type=simple
User=user
ExecStart=/home/user/serve.py
WorkingDirectory=/home/user/
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Вместо journal можно прописать syslog или имя файла.

alex_the_v ★★★
()
Ответ на: комментарий от intelfx

systemd не умеет писать в /var/log/syslog или ещё куда-то там

intelfx неправильно ответил на вопрос про systemd ШОК ВИДЕО. StandardOutput=syslog

anonymous
()
Ответ на: комментарий от anonymous

Ты б разобрался сначала. Это запись в syslog-сокет, тебе в любом случае нужна реализация syslog.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Хотя, по ходу ты прав. До 236 systemd по умолчанию писал stdout процесса в journal, так что можно вообще ничего не делать. Однако если ты хочешь вместо журнала писать куда-то еще, например в файл, то таки надо 236.

alex_the_v ★★★
()
Последнее исправление: alex_the_v (всего исправлений: 1)
Ответ на: комментарий от alex_the_v

StandardInput, StandardError и StandardOutput поддерживаются начиная с 236

Нет. Начиная с systemd 236 поддерживается ряд новых значений, типа StandardOutput=file и StandardOutput=text. Сами директивы (с вариантами значений journal, syslog, console, tty, kmsg и т. п.) появились когда-то очень давно.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Xwo

Должен показывать. Тебе правильно советуют отключить (или перевести в построчный режим) буферизацию вывода: питон слишком умный и включает полную буферизацию вывода, если обнаруживает, что вывод подключен куда-то кроме tty.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.