OpenLDAP 預設會透過 rsyslog 的 local4 記錄所有的訊息(log),若是沒有特別的設定的話,這些記錄通常會跟系統的一些雜七雜八的訊息一起記錄到 /var/log/rsyslog 中,這樣的話要查閱記錄檔時就很辛苦了。

這裡介紹如何將所有記錄至 local4 的訊息另外指定儲存的檔案,並設定 logrotate 定期壓縮過時的記錄檔,這個設定方式也可以用於其他的 facility 設定,logrotate 提供 8 個 facility 給一般性的自定用途,從 local0 到 local7,設定的方式都是一樣的。


首先設定 rsyslog,將所有 local4 的訊息寫入 /var/log/ldap/ldap.log,設定的方式最主要的就是在 /etc/rsyslog.d 中加入一個設定檔 30-ldap.conf,內容如下:

# LDAP logs
local4.* -/var/log/ldap/ldap.log

# Uncomment the following to stop logging anything that matches the last rule.
# Doing this will stop logging kernel generated UFW log messages to the file
# normally containing kern.* messages (eg, /var/log/kern.log)
& ~

這樣就可以了,接著再設定 logrotate,讓系統定期整理記錄檔,將舊的檔案自動壓縮,更舊的就自動刪除,做法也很簡單,在 /etc/logrotate.d/ 中加入一個檔案 ldap,檔案內容如下:

var/log/ldap/ldap.log
{
        rotate 24
        monthly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                reload rsyslog >/dev/null 2>&1 || true
        endscript
}

這個設定是讓系統每個月定期整理記錄檔(monthly),保留 24 個月的記錄(rotate 24),將舊的記錄檔自動壓縮(compress),保留上個月的記錄檔不壓縮(delaycompress),也就是從上上個月的記錄檔開始壓縮,這樣可以方便查閱。

這樣就可以了,最後記得重新啟動 rsyslog 讓新的設定檔生效,若是 ubuntu 的話就執行:

service rsyslog restart
reload rsyslog