1: syslog.conf的介紹
對于不同類型的Unix,標準UnixLog系統的設置,實際上除了一些關鍵詞的不同,系統的syslog.conf格式是相同的。syslog采用可配置的、統一的系統登記程序,隨時從系統各處接受log請求,然后根據/etc/syslog.conf中的預先設定把log信息寫入相應文件中、郵寄給特 定用戶或者直接以消息的方式發往控制臺。值得注意的是,為了防止入侵者修改、刪除messages里的記錄信息,可以采用用打印機記錄或采用方式來挫敗入 侵者的企圖。
2: syslog.conf的格式
可以參考man [5] syslog.conf。這里是對syslog.conf的簡單介紹。
/etc/syslog.conf文件中的一項配置記錄由“選項”(selector)和“動作”(action)兩個部分組成,兩者間用tab制表符進 行分隔(使用空格間隔是無效的)。而“選項”又由一個或多個形如“類型.級別”格式的保留字段組合而成,各保留字段間用分號分隔。如下行所示:
類型.級別 [;類型.級別] `TAB` 動作
2.1 類型
保留字段中的“類型”代表信息產生的源頭,可以是:
auth 認證系統,即詢問用戶名和口令
cron 系統定時系統執行定時任務時發出的信息
daemon 某些系統的守護程序的syslog,如由in.ftpd產生的log
kern 內核的syslog信息
lpr 打印機的syslog信息
mail 郵件系統的syslog信息
mark 定時發送消息的時標程序
news 新聞系統的syslog信息
user 本地用戶應用程序的syslog信息
uucp uucp子系統的syslog信息
local0..7 種本地類型的syslog信息,這些信息可以又用戶來定義
* 代表以上各種設備
2.2 級別
保留字段中的“級別”代表信息的重要性,可以是:
emerg 緊急,處于Panic狀態。通常應廣播到所有用戶;
alert 告警,當前狀態必須立即進行糾正。例如,系統數據庫崩潰;
crit 關鍵狀態的警告。例如,硬件故障;
err 其它錯誤;
warning 警告;
notice 注意;非錯誤狀態的報告,但應特別處理;
info 通報信息;
debug 調試程序時的信息;
none 通常調試程序時用,指示帶有none級別的類型產生的信息無需送出。如*.debug;mail.none表示調試時除郵件信息外其它信息都送出。
2.3 動作
“動作”域指示信息發送的目的地。可以是:
/filename 日志文件。由絕對路徑指出的文件名,此文件必須事先建立;
@host 遠程主機; @符號后面可以是ip,也可以是域名,默認在/etc/hosts文件下loghost這個別名已經指定給了本機。
user1,user2 指定用戶。如果指定用戶已登錄,那么他們將收到信息;
* 所有用戶。所有已登錄的用戶都將收到信息。
3: 具體實例
我們來看看/etc/syslog.conf文件中的實例:
……
*.err;kern.debug;daemon.notice;mail.crit [TAB] /var/adm/messages
……
這行中的“action”就是我們常關心的那個/var/adm/messages文件,輸出到它的信息源頭“selector”是:
*.err - 所有的一般錯誤信息;
kern.debug - 核心產生的調試信息;
daemon.notice - 守護進程的注意信息;
mail.crit - 郵件系統的關鍵警告信息
4:syslog.conf內容
日志文件由系統日志和內核日志監控程序syslogd 與klogd 控制, 在/etc/syslog.conf 文件中配置這兩個監控程序默認活動。
日志文件按/etc/syslog.conf 配置文件中的描述進行組織。以下是/etc/syslog.conf 文件的內容:
[root@localhost ~]# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
5.版本
Syslog機制是類unix系統中經常使用的一種日志記錄方式。它能夠以多種級別組合記錄系統運行過程中各類日志信息。比如內核運行信息日志,程序運行 輸出的日志等。在為嵌入式系統做開發時,將程序運行時的一些重要信息寫入日志中,對于程序的調試以及錯誤診斷幫助是非常大的。重要信息包括程序運行時的重 要變量,函數運行結果,錯誤記錄等等。對于嵌入式系統而言,由于系統資源有限,而且是交叉開發,調試及診斷及其不便。使用syslog機制,可大大簡化這 些工作。
并不是所有嵌入式系統都可以使用syslog。首先,系統使用類unix操作系統,常用的就是linux。其次,為了支持遠程日志記錄,系統中必須支持網絡通信。所幸,目前大部分嵌入式系統都是基于linux,并且支持網絡。以下論述具體實現。
在編譯busybox時,選擇syslog應用程序,并將busybox加入到linux的文件系統中去。嵌入式系統啟動后,就可以配置syslog的客 戶端。根據busybox版本,syslog的服務進程syslogd的配置有所不同。早期的syslogd忽略syslog.conf文件內的配置項, 直接使用命令參數進行配置。新版本的syslogd支持使用syslog.conf文件進行配置。可以通過syslogd –h察看幫助信息,以確定當前的syslogd版本。
當不支持syslog.conf配置時,直接使用命令參數,輸入以下命令啟動syslogd:
syslogd -n -m 0 -L -R 192.190.1.88
其中-n選項表示進程在前臺運行。
-m選項指定循環間隔時間。
-L選項表示在進行遠程日志記錄的同時,本地也進行記錄。如果不加該選項,則只進行遠程日志記錄。
-R表示進行遠程日志記錄,將syslog日志發送到目標服務器上。這里假定目標服務器為的IP地址為192.190.1.88。如果不指定端口,默認使用UDP端口514。所以要確保服務器上該端口沒用被占用。
啟動后,所有的日志信息都會發往服務器的UDP端口514。
當支持syslog.conf配置時,只需修改該配置文件即可。在文件中增加以下語句:
*.* @192.190.1.88
以上配置表示將所有syslog的日志發往服務器192.190.1.88,使用默認的UDP端口。由于syslog.conf配置相對比較靈活,可以設置 屏蔽一些不需要的信息,以及設置指定的端口等等。請參考syslog.conf的有關命令,自行研究。然后啟動syslogd即可進行遠程記錄。
這篇對linux下syslogd以及syslog.conf文件的解讀說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。