Linux
如何將日誌文件輸出重定向到網路套接字?
我正在使用一個商業 Java 應用程序,它使用 log4j 編寫它的日誌文件。我想將這些日誌文件條目放入 Syslog 中,我們在其中設置了特定的過濾器來觸發系統事件。
Log4j 沒有將其輸出傳遞給 syslog 的直接方式。我遇到的兩種方法涉及破解“catalina.sh”(不管它需要什麼;還沒有看過)腳本,另一種是編譯自定義 Java 類以與 log4j 介面。
似乎更簡單的解決方案可能是將 log4j 輸出文件符號連結到 FIFO 或管道中,該管道會將內容髮送到 syslogd 監聽網路埠(或者可能是 netcat)。關於如何接線的任何想法?
我建議您考慮為此使用logstash。它可以使用文本日誌文件並將日誌條目通過管道傳輸到各種其他系統,包括syslog。
您可能可以使用 netcat 或類似工具一起破解某些東西,但從長遠來看,使用諸如 logstash 之類的專用工具會好得多。
除了僅用作日誌傳輸之外,logstash 還可以根據需要調整日誌條目以添加其他數據(主機名等)。
您最好的辦法是設置您的本地系統日誌伺服器來讀取文件並將它們發送到您的遠端位置。為此,我廣泛使用了 syslog-ng、rsyslog 和 nxlog。快速瀏覽一下 google 會發現 syslogd 應該能夠做到這一點。