2005年6月19日 星期日

Syslog 徹底研究

參考書:Unix System Administration Handbook, 3rd(紫皮書)

Chapter 11. Syslog and Log Files

一、Log files有很多,這是 Unix 的特色。處理它也有很多方式(p.204)。
"Rotate" log files 指的是像這樣:
#!/bin/sh
cd /var/log
mv logfile.2 logfile.3
mv logfile.1 logfile.2
mv logfile logfile.1
cat /dev/null > logfile
chmod 600 logfile

二、完整的 syslog 包含三部分:
1.syslogd(logging daemon,用 /etc/syslog.conf 來調整設定)
2.openlog(程式的 library,寫程式的話可用)
3.logger(user level 工具,可用來在 shell 上發出 log entries)

三、調整 syslog.conf
每行在其中的內容,除了註解外,都以
selectoraction
的形式寫成。而 selector 又是這樣的形式:
facility.level
所以應該可以看到
facility.levelaction
這樣的東西才是。要注意的是,書上指出,上述該用的地方絕對不可以用空白取代,在設定時要特別注意這一點。

syslog 的 facility 很多,像
kern, user, mail, daemon, auth, lpr, news, uucp, cron, mark, local0-7, syslog, authpriv, ftp.... 等等;level 則有(由高到低)emerg, alert, crit, err, warning, notice, info, debug 等。在 syslog.conf 中如果要共用同一個 action 的話,是可以連結起來的,如

mail.notice;ftp.erraction
# selector 之間用分號隔開
又如
kern,news.erraction
# facility 之間用逗號隔開
==>上一行相當於 kern.err;news.erraction (這回又是用分號了)

要說明的是,這個 level 設定,是指「該 level 以上所有的」訊息都會引發 action;也就是說,如果有一個設定是
mail.erraction
的話,則 mail.err, mail.crit, mail.alert, mail.emert level 的訊息都會引發這個 action;是以此設定是在設一個「底限」。

action 則分為五個:
1.filename (絕對路徑,寫入該檔案)
2.@hostname (送到 hostname 上的 syslogd;當然,這個名字要能被解析)
3.@ip (送到 ip 上的 syslogd)
4.user1,user2,… (送「訊息」到同主機的使用者;請不要在其中加任何空白)
5.* (送「訊息」到同主機上的所有使用者)

四、測試
用 logger 命令最方便,像
logger -p local5.warning "test message"

沒有留言: