如何查看较旧的journalctl日志(也许轮换之后?)


23

我在ubuntu 16.04上运行docker,想查看日志。但是,在我猜测是某种旋转或日志增长到一定大小之后,我无法查看日志。

我尚未对journald.conf进行任何更改,因此我在此处使用默认值。

我所看到的例子:

systemctl docker status确认服务已激活since Thu 2016-10-13 18:56:28 UTC

但是,当我运行类似的东西时,我journalctl -u docker.service --until "2016-10-13 22:00"得到的唯一输出是-- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --我可以按预期查看该范围内的日志。

我的问题是为什么我不能使用journalctl查看较旧的日志,如何解决此问题以便查看日志?

Answers:


15

这可能是因为您正尝试自上次启动以来查看日志,这似乎是Docker映像内部的情况。

在Ubuntu 16.04上,日志存储默认为内存中。您可以更改默认是打开执着/etc/systemd/journald.conf和改变Storage=从线autopersistentsystemctl restart systemd-journald在配置文件编辑后,您可能需要重新启动日记记录。

我认为该日志默认情况下应该是持久性的,因此我打开了一个关于此的错误。


我同意您的看法,默认情况下它应该是永久性的(并会更改该设置),但是我确定这台计算机尚未重新启动,因此我不是100%相信单独解决此问题。仍然很高兴您提出了该问题。
jdf

在某些情况下,日志可能会以不完整的元数据降落到日志中,以便在查看完整journalctl输出而不是单位日志时可以找到它们。众所周知,这恰好在设备关闭之前记录问题。日志被发送到日志,然后日志发布对元数据的查询。有时与此同时存在该过程。不过,这听起来也不是很适合您的情况。
Mark Stosberg '16

3

发生这种情况的原因是由于存储的日记文件的大小默认设置。在文档中对此有更多详细信息。值得阅读我链接到的整个部分,但是默认设置的工作方式如下:

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.

要查看来自上次引导的日志(假设您已Storage=persistent在journald.conf中保存),如其他答案所述,可以使用命令--boot=-1标志journalctl来仅从上一次引导获取日志。

对于确定主机没有重新启动的OP,日志丢失仅是由SystemMaxUse和/或SystemKeepFree默认值引起的。

注意:我是OP,这个问题仍然有待解决,因此,由于我已经获得了日记(和rtfm)方面的更多经验,因此将其发布在这里,希望对其他人有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.