Linux上的日誌系統:syslog

 

Linux上的日誌系統:syslog

日誌系統記錄了系統天天發生的各類各樣的事情,用戶能夠經過它來檢查發生錯誤的緣由,或者尋找受到外來***時外來人員留下來的痕跡。日誌的主要功能是審計和檢測。它還能夠實時地監控系統的狀態、檢測和追蹤***者。 linux

根據信息詳細程序的不一樣能夠把日誌分級別,就叫日誌級別 安全

產生日誌的子系統:facility,設施。這些子系統彼此之間既有聯繫或者又沒有聯繫。定義哪一個子系統所產生的信息,以及級別,存儲位置。 ide

syslog服務有兩個進程:syslogd和klogd  spa

syslogd:系統,專門負責記錄非內核的其餘設施所產生的日誌 debug

klogd:內核,專門負責記錄內核產生的日誌信息 unix

內核所產生的信息具體位置在/var/log/demsg;其命令dmesg就是查看其中的內容的,也能夠用cat /var/log/demsg 直接打開其文件進行查看。 調試

咱們的系統控制權從內核轉交給init以後所產生的信息都有syslogd記錄 rest

/sbin/init  所產生的信息位置: 日誌

/var/log/message:系統標準錯誤日誌信息;非內核產生引導信息;各子系統產生的信息; blog

/var/log/maillog:郵件系統產生的日誌信息

/var/log/secure:與安全相關的日誌信息,不容許隨便查看,其權限是600的

日誌須要滾動:日誌文件不能過大,太大了不利於查看,管理起來也不方便,因此日誌就要滾動,分爲幾個小的文件便於管理。也能夠叫日誌切割,能夠根據大小、時間等進行切割。

logrotate負責日誌切割

linux系統上有一個專門完成任務計劃,來完成日誌滾動的,就是/etc/cron.daily/logrotate 腳本,此腳本能實現天天滾動一次。腳本內容以下:

 

此腳本的配置文件在/etc/logrotate.conf 內容以下圖:

 

/etc/logrotate.d 目錄下有許多定義每一個子系統滾動日誌機制的,以下圖:

 

syslog的配置文件是:/etc/syslog.conf

 

配置文件定義格式爲: facility.priority  action  即誰產生的日誌.哪一個級別產生的日誌  產生的日誌怎麼辦(如記錄文件中)

 facility,能夠理解爲日誌的來源或設備目前經常使用的facility有如下幾種: 

    auth       # 認證相關的 

    authpriv   # 權限,受權相關的 

    cron       # 任務計劃相關的 

    daemon     # 守護進程相關的 

    kern       # 內核相關的 

    lpr       # 打印相關的 

    mail      # 郵件相關的 

    mark      # 標記相關的 

    news      # 新聞相關的 

    security  # 安全相關的,與auth 相似  

    syslog   # syslog本身的 

    user         # 用戶相關的 

    uucp         # unix to unix cp 相關的 

    local0 到 local7  # 用戶自定義使用 

    *         # *表示全部的facility 

 

 priority(log level)日誌的級別,通常有如下幾種級別(從低到高) 級別越低產生的信息越詳細

    debug           # 程序或系統的調試信息 

    info            # 通常信息

    notice          # 不影響正常功能,須要注意的消息 

    warning/warn    # 可能影響系統功能,須要提醒用戶的重要事件 

    err/error       # 錯誤信息 

    crit            # 比較嚴重的 

    alert           # 必須立刻處理的 

    emerg/panic     # 會致使系統不可用的 

    *               # 表示全部的日誌級別 

    none            # 跟* 相反,表示啥也沒有 

     

 action(動做)日誌記錄的位置 

    系統上的絕對路徑    # 普通文件 如: /var/log/xxx 

    |                   # 管道  經過管道送給其餘的命令處理 

    終端                # 終端   如:/dev/console 

    @HOST               # 遠程主機 如: @10.0.0.1      

    用戶                # 系統用戶 如: root 

    *                   # 登陸到系統上的全部用戶,通常emerg級別的日誌是這樣定義的 

定義格式例子: 

mail.info   /var/log/mail.log   # 表示將mail相關的,級別爲info及info以上級別的信息記錄到/var/log/mail.log文件中 

auth.=info  @10.0.0.1         # 表示將auth相關的,基本爲info的信息記錄到10.0.0.1主機上去,前提是10.0.0.1要能接收其餘主機發來的日誌信息 

  

    user.!=error                  # 表示記錄user相關的,不包括error級別的信息 

user.!error                   # 與user.error相反 

*.info                        # 表示記錄全部的日誌信息的info級別 

mail.*                        # 表示記錄mail相關的全部級別的信息 

*.*                           # 記錄全部日誌信息的全部級別

cron.info;mail.info           # 多個日誌來源能夠用";" 隔開 

cron,mail.info                # 與cron.info;mail.info 是一個意思 

mail.*;mail.!=info            # 表示記錄mail相關的全部級別的信息,可是不包括info級別的 

如本身想定義日誌格式能夠編輯/etc/syslog.conf裏面的內容,編輯以後要從新啓動服務(service syslog restart)也能夠用service syslog reload 不用重啓就能從新讀取其配置文件並讓其生效。通常狀況下不建議重啓服務。

相關文章
相關標籤/搜索