Ath*_*ark 16 logging log stdout systemd 15.04
我目前正在尝试将 systemd 单元制作为 Web 服务器。目前,我的foo.service文件如下所示:
[Unit]
Description=The Foo Web Server
[Service]
Type=simple
ExecStart=/opt/foo/.cabal-sandbox/bin/foo
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
该foo可执行文件自动记录所有的HTTP请求到标准输出-这是很好的测试。但是,当我查看日志时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...
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么不记录所有标准输出吗?我简要地查看了上一个问题,但它没有帮助 - 但是它暗示了“......可能不适用于不使用完整systemd 的系统”的内容 - 这是否适用于 Ubuntu 15.04 ? 在此先感谢您,任何有关此问题的帮助将不胜感激!
事实上,UNIX 中的缓冲取决于上下文:当 stdout 被重定向到像控制台这样的交互式东西时 - 它通常是行缓冲的,否则它是完全缓冲的。
可以使用setvbuf库调用在应用程序内部更改缓冲。
但也可以在启动时使用stdbuf命令来完成:
ExecStart=/usr/bin/stdbuf -oL /opt/foo/.cabal-sandbox/bin/foo
Run Code Online (Sandbox Code Playgroud)
(对于行缓冲的情况)
| 归档时间: |
|
| 查看次数: |
9106 次 |
| 最近记录: |