UNIX 系統(tǒng)日志

2018-08-12 22:12 更新

系統(tǒng)日志

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ù)器。

Syslog Facilities

下面是 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)的信息。
mail 與郵件系統(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í)

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

文件 /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

文件中的每一行包含兩部分:

  • 一個(gè)消息 selector,其指定了哪種消息用來(lái)記錄。例如,內(nèi)核的所有錯(cuò)誤信息或所有調(diào)試信息。
  • 一個(gè) action,其指明了對(duì)接收的消息該怎么處理。例如,寫入一個(gè)文件中或者將消息發(fā)送到用戶的終端。

下面是上述配置的注意事項(xiàng):

  • 消息 selector 有兩部分:facility 和 priority。例如, kern.debug 選擇了所有由內(nèi)核( facility )產(chǎn)生的的調(diào)試信息( priority )。
  • 消息 selectetor kern.debug 選擇了所有 priority 大于 debug 的信息。
  • 在任何 facility 和 priority 位置上的星號(hào),表示“所有”的意思。例如, *.debug 表示所有 facility 的調(diào)試信息,而 kern.* 表示內(nèi)核所產(chǎn)生的所有信息。
  • 你也可以用逗號(hào)來(lái)指定多個(gè) facility。兩個(gè)或兩個(gè)以上的 selectetor 可以用分號(hào)組合在一起。

日志記錄 Action

action 部分指定了下面五個(gè) action 中的其中一個(gè):

  1. 將信息記錄到一個(gè)文件或設(shè)備。例如,/var/log/lpr.log 或者 /dev/console。
  2. 發(fā)送一個(gè)消息給一個(gè)用戶。你可以用逗號(hào)分開指定多個(gè)用戶名(例如,root,amrood)。
  3. 發(fā)送一個(gè)消息給所有用戶。在這種情況下,action 部分包含了一個(gè)星號(hào)(例如,*)。
  4. 用管道發(fā)送消息到程序。在這種情況下,程序是在 UNIX 管道符號(hào)(|)后指定。
  5. 將消息發(fā)送到另一臺(tái)主機(jī)上的 syslog。在這種情況下,action 部分包含了一個(gè)前面有 at 符號(hào)的主機(jī)名(例如,@w3cschool.cn)。

logger 命令

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/
mail /var/log/
mysql /var/log/
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)