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