日誌系統記錄了系統天天發生的各類各樣的事情,用戶能夠經過它來檢查發生錯誤的緣由,或者尋找受到外來***時外來人員留下來的痕跡。日誌的主要功能是審計和檢測。它還能夠實時地監控系統的狀態、檢測和追蹤***者。
根據信息詳細程序的不一樣能夠把日誌分級別,就叫日誌級別。
產生日誌的子系統:facility,設施。這些子系統彼此之間既有聯繫或者又沒有聯繫。定義哪一個子系統所產生的信息,以及級別,存儲位置。
syslog服務有兩個進程:syslogd和klogd
syslogd:系統,專門負責記錄非內核的其餘設施所產生的日誌
klogd:內核,專門負責記錄內核產生的日誌信息
內核所產生的信息具體位置在/var/log/demsg;其命令dmesg就是查看其中的內容的,也能夠用cat /var/log/demsg 直接打開其文件進行查看。
咱們的系統控制權從內核轉交給init以後所產生的信息都有syslogd記錄
/sbin/init 所產生的信息位置:
/var/log/message:系統標準錯誤日誌信息;非內核產生引導信息;各子系統產生的信息;
/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 不用重啓就能從新讀取其配置文件並讓其生效。通常狀況下不建議重啓服務。