
我想設定一個簡單的日誌伺服器來接受來自所有客戶端的日誌。我不是說標準系統日誌,例如 /var/log/mail 、訊息、啟動等。
例如/appdir/log/error.log。
我在網路上看到了很多貼文;大多數人建議使用 rsyslog 或 syslog-ng。到目前為止,我已經能夠重定向標準系統日誌而不是應用程式日誌。我使用的是centos 5/6環境。
答案1
我見過兩種主要的方法。
首先,許多應用程式將能夠本地寫入系統日誌主機。這是最好的路線。在其他情況下,我將使用基本腳本 - 如下所示的作品。
sudo tail /my/app/log | nc -w0 -u 192.168.1.1 514
編輯 - 如果您在產生日誌的系統上執行 syslog-ng,確實有一種方法可以在 syslog-ng 中處理此問題。根據需要替換命名約定和目標。 rsyslog 也可以使用類似的東西,但它更笨重(恕我直言)。
source s_trbdk3 {
file("/var/log/trbdk3.log" flags(no-parse) program_override("trbdk3") );
};
log{
source(s_trbdk3);
destination( d_mesg );
};
答案2
rsyslog 的imfile
輸入模組可以:
提供將任何標準文字檔案轉換為系統日誌訊息的能力。標準文字檔案是由可列印字元組成的文件,行之間以 LF 分隔。
你可以閱讀官方文檔了解更多。
我從來沒有嘗試過,它的效率可能不是很高,但聽起來它可以完成這項工作。
syslog-ng 似乎能夠做類似的事情file()
來源驅動程式。這個例子建議像這樣的來源聲明:
source s_all {
file("/path/to/your/file" follow_freq(1) flags(no-parse));
};