我定义了几个 systemd 服务。它们既记录到磁盘,也记录到 systemd 日志,我可以使用 进行监控journalctl -n 0 -fu myservice
。但是,我注意到从 journalctl tail 命令看到的日志通常比磁盘日志晚几分钟。我已确认这与守护进程使用的实际日志配置无关,因为当我手动运行守护进程并将其日志输出到控制台上的标准输出时,我会立即看到日志。
如何在服务生成日志时立即查看 journalctl 的日志输出?完全无缓冲或行缓冲都可以接受。
答案1
也许这是您的守护进程和用于日志记录的 systemd 之间的管道,该管道被缓冲了?这可能是作为单元运行的 Python 脚本的输出乱序,而 Shell 似乎不受影响其中建议是:
sys.stdout.flush()
在写入或环境之后添加PYTHONUNBUFFERED
将解决此问题