2012-12-04 78 views
3

我們在負載平衡的服務器上使用syslog-ng實現了集中式日誌記錄。該設置的歷史可以在這裏看到:How do I set up PHP Logging to go to a remote server?
它工作正常,但換行符在目的地被剝離。有沒有辦法保持換行符不變?下面是我們的配置:換行符在syslog-ng中被刪除

來源

destination php { tcp("server.com" port(xxxx)); }; 
log { source(s_all); filter(f_php); destination(php); }; 
filter f_php { facility(user); }; 

目標

destination d_php { file("$PROGRAM" owner(www-data) group(www-data) perm(0644)); }; 
filter f_php { program("^\/var\/log\/"); }; 
log { source(s_all); filter(f_php); destination(d_php); flags(final); }; 
+0

還有另一個我們剛剛發現的問題。日誌消息被截斷爲500個字符。這看起來像syslog協議中的一個硬限制,可能需要從源代碼重新編譯。我們希望不要走這條路。有沒有人遇到過這個? –

+0

只是以前的評論更新。日誌沒有被截斷,而是每500個字符分割一次。 –

回答

0

您可以更改系統日誌的模板格式爲目標,並手動在末尾添加換行符。例如,以下是我用於我的一個定製syslog-ng流的模板。我改變日期格式(更容易被腳本解析)。最後注意「\ n」。

file("$PROGRAM" 
     template("$R_ISODATE $HOST_FROM $MSGHDR$MSG\n") 
     template_escape(no) 
); 

syslog-ng docs的信息,各種$VARS就可以使用。