jdf*_*jdf 42 ubuntu systemd journald journalctl ubuntu-16.04
我在 ubuntu 16.04 上运行 docker 并想查看日志。但是,在我猜测是某种轮换或日志增长到一定大小后,我无法查看日志。
我没有对我的 journald.conf 做任何更改,所以我在那里使用默认值。有容器在运行,所以 docker 日志输出了相当多的数据。
我所看到的示例:
systemctl docker status
确认服务已激活:
since Thu 2016-10-13 18:56:28 UTC
Run Code Online (Sandbox Code Playgroud)
但是,当我运行类似的东西时:
journalctl -u docker.service --since "2016-10-13 22:00"
Run Code Online (Sandbox Code Playgroud)
我得到的唯一输出是:
-- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --
Run Code Online (Sandbox Code Playgroud)
我可以按预期查看该范围内的日志。
我的问题是:为什么我不能使用 journalctl 查看旧日志,我该如何解决这个问题以便查看日志?
Mar*_*erg 24
这可能是因为您试图查看自上次启动以来的日志,这似乎是 docker 映像中的情况。
在 Ubuntu 16.04 上,日志存储默认为内存中。您可以更改默认是打开执着/etc/systemd/journald.conf
和改变Storage=
从线auto
到persistent
。您可能需要systemctl restart systemd-journald
在配置文件编辑后重新启动 journald 。
我认为该日志应该是 persistent-by-default,所以我打开了一个关于它的错误。
jdf*_*jdf 17
发生这种情况的原因是由于存储的日志文件大小的默认值。文档中有关于此的更多详细信息。值得阅读我链接到的整个部分,但默认值的工作方式如下:
journald will use 10% of the disk or 4G, whichever is smaller.
journald will leave free 15% of the disk or 4G, whichever is larger.
Run Code Online (Sandbox Code Playgroud)
要查看上次启动的日志,假设您Storage=persistent
在 journald.conf 中有,正如其他答案所述,您可以使用命令上的--boot=-1
标志journalctl
来获取上次启动的日志。
在 OP 确定主机没有重新启动的情况下,日志丢失只是由SystemMaxUse
和/或SystemKeepFree
默认值引起的。
注意:我是 OP 并且这个问题仍然有一些赞成票,所以由于我在 journald(和 rtfm)方面获得了更多经验,所以我将其发布在这里希望它可以帮助其他人。
归档时间: |
|
查看次数: |
36323 次 |
最近记录: |