我目前正在尝试将一个systemd单元作为一个Web服务器。目前,我的
能有人解释一下为什么它没有记录所有的stdout输出吗?我简单地看了一下this previous question,但是它没有帮助——不过它提到了一些类似于“……在不使用完整systemd的系统上可能不起作用”的内容。这对于Ubuntu 15.04也是如此吗?非常感谢您提前的帮助,对此的任何帮助将不胜感激!
foo.service
文件如下所示:[Unit]
Description=The Foo Web Server
[Service]
Type=simple
ExecStart=/opt/foo/.cabal-sandbox/bin/foo
[Install]
WantedBy=multi-user.target
foo
可执行文件会自动将所有的 HTTP 请求记录到标准输出(stdout) - 这已经经过充分测试。然而,当我使用 journalctl -u foo
查看日志时,我只能得到如下输出:...
May 06 17:46:57 localhost systemd[1]: Stopping The Foo Web Server...
May 06 17:46:57 localhost systemd[1]: Started Foo Web Server.
May 06 17:46:57 localhost systemd[1]: Starting The Foo Web Server...
May 06 17:47:08 localhost systemd[1]: Stopping The Foo Web Server...
May 06 17:47:08 localhost systemd[1]: Started The Foo Web Server.
May 06 17:47:08 localhost systemd[1]: Starting The Foo Web Server...
能有人解释一下为什么它没有记录所有的stdout输出吗?我简单地看了一下this previous question,但是它没有帮助——不过它提到了一些类似于“……在不使用完整systemd的系统上可能不起作用”的内容。这对于Ubuntu 15.04也是如此吗?非常感谢您提前的帮助,对此的任何帮助将不胜感激!
print('Hello World!', flush=True)
,问题就解决了!输出开始出现在journalctl中。 - timbramEnvironment=PYTHONUNBUFFERED=1
放入你的服务文件中,这是一个 @timbram 提到的建议的替代方法。你可以在 https://unix.stackexchange.com/a/608678/161268 找到更多相关信息。 - Brad Grissom