将日志日志获取到纯文本文件

Jos*_*sto 9 syslog systemd docker journald

我想将日志日志记录到一个文件中,以便稍后可以获取它并将其发送到 Logstash。我考虑过运行 syslog-ng 并使其成为 Journald 的客户端,这样我就可以获得 syslog 文件。我在 CoreOS 机器上使用 Docker 容器,因此我尝试将 syslog-ng 作为 CoreOS docker 主机中的容器运行,创建一个执行该容器的 systemd 单元。我按照此页面在 systemd 中获取 syslog,但是如果我尝试使 syslog-ng 容器直接从主机中的 syslog 套接字读取(通过使用 docker 卷安装它),它会抱怨“地址已在使用中”。所以我有日志记录,一个运行 syslog-ng 的容器,但我不知道如何在 syslog-ng 内获取日志日志。

我在文件中获取日志日志的替代解决方案是运行一个执行 的 systemd 单元journalctl -f --json | tee -a /var/log/systemd,但我不确定该解决方案的可靠性。这是一个足够好的解决方案吗?

小智 12

我确实意识到这个问题有点过时了,但它是谷歌上最早的搜索结果之一。该选项和 --json 选项似乎对我不起作用,并且没有显示在手册页中。

我查看了journalctl的手册页,有一个名为:--no-tail的选项,它将直接将日期输出到std,在那里它可以通过管道传输到另一个应用程序或文件中。

就我而言,我想要今天的 ssh 日志,因此执行以下命令 journalctl -u sshd -S today --no-tail > main.log

技术说明:获取今天起本机的所有日志sshd;然后>将其输出到文件中。

就您而言,我相信这就是您想要的:journalctl --no-tail > test.log

这是在 Arch Linux 中测试的。