UNIX 系統(tǒng)有一個(gè)非常靈活和強(qiáng)大的日志系統(tǒng),它讓你能夠記錄幾乎任何你能想象的東西,然后你可以操作日志來(lái)獲取你需要的信息。
許多版本的 UNIX 提供了一個(gè)名為 syslog 的通用日志工具,有信息需要記錄的單獨(dú)程序要將信息發(fā)送到 syslog。
Unix syslog 是一個(gè)主機(jī)可配置的,統(tǒng)一的系統(tǒng)日志工具。該系統(tǒng)采用集中式的系統(tǒng)日志進(jìn)程,其運(yùn)行程序 /etc/syslogd
或者 /etc/syslog
。
系統(tǒng)記錄器的操作是相當(dāng)簡(jiǎn)單的。程序發(fā)送日志條目到 syslogd,其將會(huì)在配置文件 /etc/syslogd.conf
或 /etc/syslog
中查找,當(dāng)找到一個(gè)匹配后,將日志消息寫入到期望的日志文件中。
現(xiàn)有你應(yīng)該了解的四種基本日志術(shù)語(yǔ):
術(shù)語(yǔ) | 描述 |
---|---|
Facility | 此標(biāo)識(shí)符用來(lái)描述提交的日志信息的應(yīng)用程序或進(jìn)程。例如郵件,內(nèi)核和 FTP。 |
Priority | 一個(gè)顯示消息重要性的指示器。syslog 作為準(zhǔn)則定義了消息的級(jí)別,從調(diào)試信息到關(guān)鍵事件。 |
Selector | 一個(gè)或更多的 facility 和 level 的結(jié)合體 。當(dāng)一個(gè)輸入事件匹配一個(gè) selector 時(shí),一個(gè) action 會(huì)被執(zhí)行。 |
Action | 傳入的消息匹配 selector 時(shí)會(huì)發(fā)生的事情。Action 可以將消息寫入日志文件,將消息回傳到控制臺(tái)或其他設(shè)備,將消息寫入到一個(gè)登錄用戶,或?qū)⑾l(fā)送到另一個(gè)日志服務(wù)器。 |
下面是 selector 可用的 facility。不是所有的 facility 都存在于所有版本的 UNIX。
Facility | 描述 |
---|---|
auth | 需要用戶名和密碼的相關(guān)活動(dòng)(getty,su,login) |
authpriv | 類似于 auth 的認(rèn)證,但是記錄的文件只能被授權(quán)的用戶讀取。 |
console | 用于捕獲信息,這些信息一般會(huì)傳向系統(tǒng)控制臺(tái)。 |
cron | 與 cron 系統(tǒng)有關(guān)的計(jì)劃任務(wù)信息。 |
daemon | 所捕獲的所有系統(tǒng)守護(hù)進(jìn)程信息。 |
ftp | ftp 守護(hù)進(jìn)程相關(guān)的信息。 |
kern | 內(nèi)核信息。 |
local0.local7 | 用戶自定義使用的本地信息。 |
lpr | 與打印服務(wù)系統(tǒng)有關(guān)的信息。 |
與郵件系統(tǒng)相關(guān)的信息。 | |
mark | 用于生產(chǎn)日志文件中時(shí)間戳的偽事件。 |
news | 與網(wǎng)絡(luò)新聞傳輸協(xié)議( nntp )有關(guān)的信息。 |
ntp | 與網(wǎng)絡(luò)時(shí)間協(xié)議有關(guān)的信息。 |
user | 普通用戶進(jìn)程產(chǎn)生的信息。 |
uucp | UUCP 子系統(tǒng)生成的信息。 |
syslog 的優(yōu)先級(jí)( Priority )如下表:
Priority | 描述 |
---|---|
emerg | 緊急情況,如即將發(fā)生的系統(tǒng)崩潰,通常會(huì)廣播到所有用戶。 |
alert | 需要立即修改的情況,如系統(tǒng)數(shù)據(jù)庫(kù)的損壞。 |
crit | 關(guān)鍵的情況,如一個(gè)硬件的錯(cuò)誤。 |
err | 普通錯(cuò)誤。 |
warning | 警告 |
notice | 不是一個(gè)錯(cuò)誤的情況,但是可能需要用特定方式的處理一下。 |
info | 報(bào)告性的消息。 |
debug | 用于調(diào)試程序的消息。 |
none | 沒有重要級(jí)別,通常用于指定非日志的消息。 |
facility 和 level 的組合能夠讓你辨別記錄了什么和這些日志信息去哪兒了。
每個(gè)程序盡職盡責(zé)地向系統(tǒng)記錄器發(fā)送消息,記錄器基于 selector 定義的 level 決定跟蹤什么和舍棄什么信息。
當(dāng)你指定了一個(gè) level,系統(tǒng)會(huì)記錄這一 level 及更高 level 的一切信息。
文件 /etc/syslog.conf 用于配置記錄消息的位置。一個(gè)典型的 syslog.conf 文件看起來(lái)應(yīng)該像這樣:
*.err;kern.debug;auth.notice /dev/console
daemon,auth.notice /var/log/messages
lpr.info /var/log/lpr.log
mail.* /var/log/mail.log
ftp.* /var/log/ftp.log
auth.* @prep.ai.mit.edu
auth.* root,amrood
netinfo.err /var/log/netinfo.log
install.* /var/log/install.log
*.emerg *
*.alert |program_name
mark.* /dev/console
文件中的每一行包含兩部分:
下面是上述配置的注意事項(xiàng):
action 部分指定了下面五個(gè) action 中的其中一個(gè):
/var/log/lpr.log
或者 /dev/console
。UNIX 提供了 logger 命令,這是處理系統(tǒng)日志記錄的一個(gè)非常有用的命令。logger 命令發(fā)送日志消息到 syslogd 守護(hù)進(jìn)程,從而驅(qū)使系統(tǒng)記錄日志。
這意味著我們可以隨時(shí)用命令行檢查 syslogd 守護(hù)進(jìn)程及其配置。logger 命令提供了一種在命令行上添加一行條目到系統(tǒng)日志文件中的方法。
該命令的格式是:
logger [-i] [-f file] [-p priority] [-t tag] [message]...
下面是具體的參數(shù)細(xì)節(jié):
選項(xiàng) | 描述 |
---|---|
-f filename | 使用文件 filename 的內(nèi)容作為消息來(lái)記錄。 |
-i | 日志的每一行都記錄進(jìn)程的 id。 |
-p priority | 指定輸入消息的優(yōu)先級(jí) priority(指定的 selector),優(yōu)先級(jí) priority 可以是數(shù)字或者指定為 facility.level 對(duì)的格式。默認(rèn)參數(shù)是 user.notice。 |
-t tag | 用指定 tag 標(biāo)記記錄到日志中的每一行。 |
message | 字符串參數(shù),它的內(nèi)容以特定順序連接在一起,由空格分開。 |
日志文件有快速增長(zhǎng)的特點(diǎn),并消耗大量的磁盤空間。大多數(shù) UNIX 發(fā)行版系統(tǒng)使用了工具(如 newsyslog 或 logrotate)啟用日志輪換功能。
這些工具由 cron 守護(hù)進(jìn)程在一個(gè)頻繁的時(shí)間間隔里調(diào)用。你可以在 newsyslog 或 logrotate 的手冊(cè)頁(yè)中獲取更多的細(xì)節(jié)內(nèi)容。
所有的系統(tǒng)應(yīng)用程序創(chuàng)建自己的日志文件在 /var/log
和它的子目錄里。下面這里有幾個(gè)重要的應(yīng)用,其相應(yīng)的日志目錄:
應(yīng)用 | 目錄 |
---|---|
httpd | /var/log/httpd |
samba | /var/log/samba |
cron | /var/log/ |
/var/log/ | |
mysql | /var/log/ |
更多建議: