鍍金池/ 教程/ Linux/ 系統(tǒng)日志
通信工具
信號和 Traps
文件管理
vi 編輯器使用向?qū)?/span>
替代
變量
環(huán)境
進程管理
實用工具
引用機制
Manpage 幫助
文件系統(tǒng)基礎知識
系統(tǒng)日志
循環(huán)
正則表達式和 SED
目錄
函數(shù)
管道和過濾器
特殊變量
輸入/輸出重定向
系統(tǒng)性能
用戶管理
循環(huán)控制
決策
什么是 UNIX ?
數(shù)組
什么是 Shell 腳本
基本操作符
文件權限

系統(tǒng)日志

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 的結合體 。當一個輸入事件匹配一個 selector 時,一個 action 會被執(zhí)行。
Action 傳入的消息匹配 selector 時會發(fā)生的事情。Action 可以將消息寫入日志文件,將消息回傳到控制臺或其他設備,將消息寫入到一個登錄用戶,或?qū)⑾l(fā)送到另一個日志服務器。

Syslog Facilities

下面是 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)有關的信息。
mail 與郵件系統(tǒng)相關的信息。
mark 用于生產(chǎn)日志文件中時間戳的偽事件。
news 與網(wǎng)絡新聞傳輸協(xié)議( nntp )有關的信息。
ntp 與網(wǎng)絡時間協(xié)議有關的信息。
user 普通用戶進程產(chǎn)生的信息。
uucp UUCP 子系統(tǒng)生成的信息。

Syslog 優(yōu)先級

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

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

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

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

下面是上述配置的注意事項:

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

日志記錄 Action

action 部分指定了下面五個 action 中的其中一個:

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

logger 命令

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/
mail /var/log/
mysql /var/log/
上一篇:變量下一篇:文件權限