为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

手掌心 2021-08-24 18:29:55
我将 python 脚本作为 systemd 服务运行,它在以下.service文件中定义:[Unit]Description=MyServiceAfter=multi-user.target[Service]Type=idleExecStart=/usr/bin/python3 /home/username/projects/website_notifier/run_service.py[Install]After=multi-user.target在我的 run_service.py 文件中,我然后使用日志记录模块记录输出:import logginglogging.basicConfig(filename=settings['log_file_name'], level=logging.INFO)logging.info("Starting notifier service at " + str(datetime.utcnow()))问题是当我运行我启动我的文件时,这些信息没有被记录到我的日志文件中 systemctl现在,我知道通常 systemd 会输出到 journalctl,我不想要这个。我希望能够通过另一个不以管理员权限运行的脚本访问此日志。我怎样才能做到这一点?
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

从那以后,我改用Loguru进行日志记录,它似乎更加直观和实用。


此外,将以下内容添加到.service文件可确保日志记录没有缓冲并且是实时的:


[Service]

Environment=PYTHONUNBUFFERED=1


查看完整回答
反对 回复 2021-08-24
?
慕容3067478

TA贡献1773条经验 获得超3个赞

首先检查您的服务是否正在运行:systemctl status MyService应该向您显示错误。

After进入[Unit]部分,而不是[Install]

一旦我确定你的脚本对我有用。其他检查事项:

  • 日志文件路径是绝对路径吗?

  • 启动服务的用户是否有权在那里写入?

我建议只记录到标准输出和日志,这样您就不必担心轮换日志文件、需要多少空间等journalctl。查询日志也非常好。您应该能够以非 root 用户身份访问日志,或者作为与脚本相同的用户,或者通过在 group 中systemd-journal


查看完整回答
反对 回复 2021-08-24
  • 3 回答
  • 0 关注
  • 488 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信