我想將日誌日誌記錄到一個文件中,以便稍後可以獲取它並將其發送到 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
,但我不確定該解決方案的可靠性。這是一個夠好的解決方案嗎?
答案1
我確實意識到這個問題有點過時了,但它是谷歌上最早的搜尋結果之一。該選項和 --json 選項似乎對我不起作用,並且沒有顯示在手冊頁中。
我查看了journalctl的手冊頁,有一個名為:--no-tail的選項,它將直接將日期輸出到std,在那裡它可以透過管道傳輸到另一個應用程式或檔案中。
就我而言,我想要今天的 ssh 日誌,因此請執行以下命令
journalctl -u sshd -S today --no-tail > main.log
:
技術說明:取得今天起本機的所有日誌sshd
;然後>
將其輸出到文件中。
就您而言,我相信這就是您想要的:journalctl --no-tail > test.log
。
這是在 Arch Linux 中測試的。