<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一江春水向東流

    做一個有思想的人,期待與每一位熱愛思考的人交流,您的關注是對我最大的支持。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      44 隨筆 :: 139 文章 :: 81 評論 :: 0 Trackbacks
    本文檔的Copyleft歸yfydz所有,使用GPL發布,可以自由拷貝,轉載,轉載時請保持文檔的完整性,嚴禁用于任何商業用途。
    msn: yfydz_no1@hotmail.com
    來源:http://yfydz.cublog.cn
    ?
    參考文獻:man syslog syslogd syslog.conf openlog, RFC3164
    ?
    1. 前言
    ?
    syslog是UNIX系統中提供的一種日志記錄方法(RFC3164),syslog本身是一個服務器,程序中凡是使用syslog記錄的信息都會發送到該服務器,服務器根據配置決定此信息是否記錄,是記錄到磁盤文件還是其他地方,這樣使系統內所有應用程序都能以統一的方式記錄日志,為系統日志的統一審計提供了方便。
    ?
    2. 日志格式
    ?
    syslog記錄的日志格式為:
    月 日 時:分:秒 主機名 標志 日志內容
    ?
    3. syslog編程
    ?
    為記錄日志,通常用到3個函數,openlog(3),syslog(3)和closelog(3),openlog(3)和closelog(3)不是必須的,沒有openlog(3)的話將用系統缺省的方式記錄日志。
    ?
    ????? #include <syslog.h>
    ????? void openlog( char *ident, int option, int? facility)
    ????? void syslog( int priority, char *format, ...)
    ????? void closelog( void )
    ?
    openlog(3)有三個參數,第一個參數是標志字符串,也就是日志中的第5個字段,不設的話缺省取程序名稱;
    第二個參數是選項,是下面一些標志位的組合:
    ?????? LOG_CONS:日志信息在寫給日志服務器的同時打印到終端
    ?????? LOG_NDELAY:立即記錄日志
    ?????? LOG_PERROR:把日志信息也輸出到標準錯誤流
    ?????? LOG_PID:在標志字段中記錄進程的PID值
    第三個參數是說明日志類型的,定義了以下類型(各類型啥意思就自己看或猜吧,俺就不多說了):
    ?????? LOG_AUTH
    ?????? LOG_AUTHPRIV
    ?????? LOG_CRON
    ?????? LOG_DAEMON
    ?????? LOG_KERN
    ?????? LOG_LOCAL0 through LOG_LOCAL7
    ?????? LOG_LPR
    ?????? LOG_MAIL
    ?????? LOG_NEWS
    ?????? LOG_SYSLOG
    ?????? LOG_USER(default)
    ?????? LOG_UUCP
    ?
    syslog(3)函數主要的是第一個參數priority,后面那些參數就是和printf(3)函數用法一樣了,priority值表示該條日志的級別,日志級別分8級,由高到低的順序為:
    ?????? LOG_EMERG
    ?????? LOG_ALERT
    ?????? LOG_CRIT
    ?????? LOG_ERR
    ?????? LOG_WARNING
    ?????? LOG_NOTICE
    ?????? LOG_INFO
    ?????? LOG_DEBUG
    如果openlog(3)時沒有指定facility,是可以把facility的值或到priority中的,如(LOG_AUTH | LOG_INFO),已經設置了就可以不用或了。
    ?
    closelog(3)這個沒啥好說的了,關閉日志記錄。

    4. syslog服務器配置
    ?
    syslog服務器的配置文件為/etc/syslog.conf,syslog(3)函數把想記錄的日志信息都發送給日志服務器,但此日志最終是否記錄到文件或發送給遠程服務器,則是由此配置文件來決定的,該配置文件就是告訴日志服務器要記錄那些類型和級別的日志,如何記錄等信息。
    ?
    配置文件是文本文件,每行配置分兩個字段,第一字段是說明要記錄哪類日志,第二字段是說明日志存放位置,可以是本地文件,也可以是遠程服務器。
    ?
    第一字段:
    第一字段基本格式是“facility.priority”,可以同時定義多個,中間用逗號“,”或分號“;”分隔。
    facility名稱就是上面說的facility值的后半部的小寫,如news, mail,kern, cron等,也可以用“*”表示所有facility類型;
    priority名稱就是上面說的priority值的后半部的小寫,如emerg, alert,err, info等,也可以用“*”表示所有priority類型,比此級別高的日志都會自動記錄,用none表示不記錄;
    舉例:
    kern.* : 所有級別的內核類型日志
    mail.err: 錯誤及錯誤級別以上的mail類型日志
    如果不記錄某級別的日志,在級別前加“!”,如:
    auth.info;auth.!err :info及info級別以上但不包括err級別的auth類型日志

    第二字段:
    第二字段分兩類,本地文件和遠程服務器
    本地文件:直接就是寫本地文件的文件名,如 /var/log/messages。一般來說日志信息會立即寫到文件中,但會降低系統效率,可以在文件名前加減號“-”表示先將信息緩存,到一定量后再一次性寫入文件,這樣可以提高效率;
    遠程服務器:格式是“@address”,“@”表示進行遠程記錄,將日志發送到遠程的日志服務器,日志服務器的端口是UDP514,address可以是IP地址,也可以是域名
    ?
    舉例:
    # 將所有級別的內核日志發送到終端
    kern.*? /dev/console?
    ?
    # 將所有類型所有級別的日志記錄到/var/log/messages文件
    *.* /var/log/messages
    ?
    # 所有info級別以上的信息,不包括mail類型所有級別和authpriv類型的err級別信息,
    # 記錄到/var/log/messages文件,不立即寫入
    *.info;mail.none;authpriv.!err?????? -/var/log/messages
    ?
    #將所有級別的內核日志發送到遠程syslog服務器
    kern.*? @1.1.1.1
    ?
    5. syslog服務器
    ?
    在linux下提供了sysklogd的syslog服務器的實現,可以記錄本機日志也可以接收(syslogd的-r選項)和轉發(syslogd的-h選項)來自外部的日志。
    ?
    sysklogd包括兩個程序,klogd和syslogd,klogd用于接收內核日志,再發送到syslogd,syslogd則可以直接接收應用程序和遠程的日志,syslogd是通過一個域socket(AF_UNIX)來接收數據的,syslog()函數記錄的日志都發送到此域socket,socket文件是/dev/log。
    ?
    syslog(3)函數發送給syslogd服務器的日志信息前都加上了類型和級別信息,具體格式是“<x>”,“x”是一個0~255的數,8位,低3位表示日志級別,所以共8級,高五位表示日志類型,最多32種,不過目前沒用到那么多,可以看看/usr/include/sys/syslog.h中的定義就知道了。
    ?
    要生成日志信息時,syslogd是先生成日志前部信息:月 日 時:分:秒 主機名 標志,再和日志內容信息拼接起來的,日期用ctime(3)函數獲取,隱去了前4個表示星期的字節和后面年的信息,最終生成你所看到的日期格式,老實說那段代碼及其丑陋。
    ?
    6. 結論
    ?
    syslog方便了程序信息的記錄,由于使用了統一的格式記錄使得審計也可以比較方便。要記錄日志,除了在應用程序中用syslog(3)函數記錄外,還要正確配置/etc/syslog.conf文件,使服務器能正確記錄那些想記錄的日志。
    posted on 2007-05-09 11:16 allic 閱讀(762) 評論(0)  編輯  收藏 所屬分類: 心得感想
    主站蜘蛛池模板: 日韩精品一区二区亚洲AV观看| 免费无码国产V片在线观看| 亚洲另类精品xxxx人妖| 亚洲AV女人18毛片水真多| 99久久99这里只有免费的精品| 国产麻豆视频免费观看| 国产亚洲精品影视在线产品| 亚洲日本国产精华液| 日韩在线观看免费| 国产在线jyzzjyzz免费麻豆| 亚洲熟妇丰满多毛XXXX| 亚洲精品无码不卡在线播放| 午夜精品免费在线观看| 亚洲国产精品自在拍在线播放| 亚洲天堂福利视频| 国产乱码免费卡1卡二卡3卡| 中日韩亚洲人成无码网站| 免费国产黄网站在线观看| 国产亚洲精品激情都市| a级大片免费观看| 久久亚洲sm情趣捆绑调教| 中文在线观看免费网站| 亚洲成A∨人片天堂网无码| 精品国产免费人成网站| 亚洲综合精品网站| 国产一区二区三区亚洲综合| 一二三四在线播放免费观看中文版视频 | 国内精品99亚洲免费高清| 亚洲av永久中文无码精品综合 | 午夜国产羞羞视频免费网站| 99久久国产亚洲综合精品| 国产麻豆剧传媒精品国产免费| 亚洲性无码一区二区三区| 大地资源二在线观看免费高清| 国产亚洲综合成人91精品| 国产特黄特色的大片观看免费视频| 亚洲日本精品一区二区| 免费无码成人AV在线播放不卡| 亚洲欧洲日韩极速播放| 狠狠综合久久综合88亚洲| 在线观看无码AV网站永久免费|