我想将日志logging日志logging到一个文件中,以便以后可以将其取出并发送到Logstash。 我想到了运行syslog-ng,并使其成为journald的客户端,所以我会得到syslog文件。 我在CoreOS机器上使用了Docker容器,所以我尝试在CoreOS docker主机中运行syslog-ng作为容器,创build一个执行容器的systemd单元。 我跟着这个页面来获取systemd中的syslog ,但是如果我试图让我的syslog-ng容器直接从主机的syslog套接字中读取(通过挂载一个docker卷),它会抱怨“Address already in use”。 所以我有日志logging,一个运行syslog-ng的容器,但我不知道如何在syslog-ng中获取日志logging日志。
我的备选解决scheme是将日志文件logging到文件中,以运行执行journalctl -f --json | tee -a /var/log/systemd的systemd单元 journalctl -f --json | tee -a /var/log/systemd ,但是我不确定这个解决scheme的可靠性。 这是一个很好的解决scheme吗?
我意识到这个问题有点过时了,但它是Google上最早的search结果之一。 这和-json选项似乎不适用于我,并不显示在手册页。
我查看了journalctl的手册页,并且有一个名为:–no-tail的选项,它将直接将date输出到std,以便将其输送到另一个应用程序或文件中。
在我的情况下,我想从今天我的SSH日志,所以执行此: journalctl -u sshd -S today --no-tail > main.log 。
技术解释:获取所有来自用户sshd日志; >然后输出这个文件。
在你的情况下,我相信这就是你想要的: journalctl --no-tail > test.log 。
这在Arch Linux中进行了testing。