在Debian系統中,syslog的配置文件位于/etc/rsyslog.conf(對于rsyslog)或/etc/syslog-ng/syslog-ng.conf(對于syslog-ng)。要定制輸出格式,你需要編輯相應的配置文件。
以下是針對rsyslog和syslog-ng的定制輸出格式的方法:
對于rsyslog:
sudo nano /etc/rsyslog.conf
template部分,如果沒有,請添加一個。例如,創建一個名為CustomFormat的模板:$template CustomFormat,"%timegenerated% %hostname% %app-name% %procid% %msgid% %structed-data% %$!\n"
這里,我們定義了一個自定義格式,包括時間戳、主機名、應用程序名稱、進程ID、消息ID、結構化數據等。你可以根據需要修改這個格式。
authpriv設施的消息發送到本地日志文件:if $facility-text == 'authpriv' then /var/log/auth.log
& stop
:msg, contains, "authpriv" -?CustomFormat
這將把自定義格式應用于所有來自authpriv設施的消息。
保存并關閉文件。
重啟rsyslog服務以應用更改:
sudo systemctl restart rsyslog
對于syslog-ng:
sudo nano /etc/syslog-ng/syslog-ng.conf
log部分,如果沒有,請添加一個。例如,創建一個名為CustomFormat的模板:template t_CustomFormat {
template("${ISODATE} ${HOST} ${PROGRAM} ${PID} ${MSGID} ${STRUCTURED-DATA}\n");
};
這里,我們定義了一個自定義格式,包括時間戳、主機名、應用程序名稱、進程ID、消息ID、結構化數據等。你可以根據需要修改這個格式。
authpriv設施的消息發送到本地日志文件:filter f_authpriv { facility(authpriv); };
destination d_authpriv { file("/var/log/auth.log"); };
log { source(s_src); filter(f_authpriv); destination(d_authpriv); };
rewrite r_CustomFormat { template(t_CustomFormat); };
這將把自定義格式應用于所有匹配的日志消息。
保存并關閉文件。
重啟syslog-ng服務以應用更改:
sudo systemctl restart syslog-ng
現在,你的Debian系統應該使用自定義的syslog輸出格式。