将 Python Systemd 输出记录到日志文件

我将 python 脚本作为 systemd 服务运行,它在以下.service文件中定义:


[Unit]

Description=MyService

After=multi-user.target


[Service]

Type=idle

ExecStart=/usr/bin/python3 /home/username/projects/website_notifier/run_service.py


[Install]

After=multi-user.target

在我的 run_service.py 文件中,我然后使用日志记录模块记录输出:


import logging


logging.basicConfig(filename=settings['log_file_name'], level=logging.INFO)

logging.info("Starting notifier service at " + str(datetime.utcnow()))

问题是当我运行我启动我的文件时,这些信息没有被记录到我的日志文件中 systemctl


现在,我知道通常 systemd 会输出到 journalctl,我不想要这个。我希望能够通过另一个不以管理员权限运行的脚本访问此日志。


我怎样才能做到这一点?


手掌心
浏览 489回答 3
3回答

慕桂英3389331

从那以后,我改用Loguru进行日志记录,它似乎更加直观和实用。此外,将以下内容添加到.service文件可确保日志记录没有缓冲并且是实时的:[Service]Environment=PYTHONUNBUFFERED=1

慕容3067478

首先检查您的服务是否正在运行:systemctl status MyService应该向您显示错误。After进入[Unit]部分,而不是[Install]。一旦我确定你的脚本对我有用。其他检查事项:日志文件路径是绝对路径吗?启动服务的用户是否有权在那里写入?我建议只记录到标准输出和日志,这样您就不必担心轮换日志文件、需要多少空间等journalctl。查询日志也非常好。您应该能够以非 root 用户身份访问日志,或者作为与脚本相同的用户,或者通过在 group 中systemd-journal。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python