我将 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
慕容3067478
TA贡献1773条经验 获得超3个赞
首先检查您的服务是否正在运行:systemctl status MyService
应该向您显示错误。
After
进入[Unit]
部分,而不是[Install]
。
一旦我确定你的脚本对我有用。其他检查事项:
日志文件路径是绝对路径吗?
启动服务的用户是否有权在那里写入?
我建议只记录到标准输出和日志,这样您就不必担心轮换日志文件、需要多少空间等journalctl
。查询日志也非常好。您应该能够以非 root 用户身份访问日志,或者作为与脚本相同的用户,或者通过在 group 中systemd-journal
。
添加回答
举报
0/150
提交
取消