• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            八葉草

            學習資料記錄

            syslog

            日志模塊進化史
            ver1 CEidt重載<<
            ver2 多標簽 Richedit  CLogFile <<
            ver3 多標簽 ListCtrl  PrintLog(...)

            ver4
            開始想到kiwi syslog, 測試了一下 fwrite 和 sendto 的速度,放棄
            這個方法更好,fwrite + 文件監視





            http://blog.csdn.net/xcj0535/archive/2009/05/07/4158624.aspx
             在網上搜的文章,寫的很全乎。摘抄如下,供大家參考學習

            1、介紹

            在Unix類操作系統上,syslog廣泛應用于系統日志。syslog日志消息既可以記錄在本地文件中,也可以通過網絡發送到接收syslog的服務器。接收syslog的服務器可以對多個設備的syslog消息進行統一的存儲,或者解析其中的內容做相應的處理。常見的應用場景是網絡管理工具、安全管理系統、日志審計系統。

            完整的syslog日志中包含產生日志的程序模塊(Facility)、嚴重性(Severity或 Level)、時間、主機名或IP、進程名、進程ID和正文。在Unix類操作系統上,能夠按Facility和Severity的組合來決定什么樣的日志消息是否需要記錄,記錄到什么地方,是否需要發送到一個接收syslog的服務器等。由于syslog簡單而靈活的特性,syslog不再僅限于 Unix類主機的日志記錄,任何需要記錄和發送日志的場景,都可能會使用syslog。

            長期以來,沒有一個標準來規范syslog的格式,導致syslog的格式是非常隨意的。最壞的情況下,根本就沒有任何格式,導致程序不能對syslog 消息進行解析,只能將它看作是一個字符串。

            在2001年定義的RFC3164中,描述了BSD syslog協議:
            http://www.ietf.org/rfc/rfc3164.txt
            不過這個規范的很多內容都不是強制性的,常常是“建議”或者“約定”,也由于這個規范出的比較晚,很多設備并不遵守或不完全遵守這個規范。接下來就介紹一 下這個規范。

            約定發送syslog的設備為Device,轉發syslog的設備為Relay,接收syslog的設備為Collector。Relay本身也可以發送自身的syslog給Collector,這個時候它表現為一個Device。Relay也可以只轉發部分接收到的syslog消息,這個時候它同時表現為Relay和Collector。

            syslog消息發送到Collector的UDP 514端口,不需要接收方應答,RFC3164建議 Device 也使用514作為源端口。規定syslog消息的UDP報文不能超過1024字節,并且全部由可打印的字符組成。完整的syslog消息由3部分組成,分別是PRI、HEADER和MSG。大部分syslog都包含PRI和MSG部分,而HEADER可能沒有。

            2、syslog的格式

            下面是一個syslog消息:
            <30>Oct 9 22:33:20 hlfedora auditd[1787]: The audit daemon is exiting.
            其中“<30>”是PRI部分,“Oct 9 22:33:20 hlfedora”是HEADER部分,“auditd[1787]: The audit daemon is exiting.”是MSG部分。

            2.1、PRI部分
            PRI部分由尖括號包含的一個數字構成,這個數字包含了程序模塊(Facility)、嚴重性(Severity),這個數字是由Facility乘以 8,然后加上Severity得來。不知道他們為什么發明了這么一種不直觀的表示方式。
            也就是說這個數字如果換成2進制的話,低位的3個bit表示Severity,剩下的高位的部分右移3位,就是表示Facility的值。
            十進制30 = 二進制0001 1110
            0001 1... = Facility: DAEMON - system daemons (3)
            .... .110 = Severity: INFO - informational (6)

            Facility的定義如下,可以看出來syslog的Facility是早期為Unix操作系統定義的,不過它預留了User(1),Local0~7 (16~23)給其他程序使用:

                  Numerical             Facility
                     Code

                      0             kernel messages
                      1             user-level messages
                      2             mail system
                      3             system daemons
                      4             security/authorization messages (note 1)
                      5             messages generated internally by syslogd
                      6             line printer subsystem
                      7             network news subsystem
                      8             UUCP subsystem
                      9             clock daemon (note 2)
                     10             security/authorization messages (note 1)
                     11             FTP daemon
                     12             NTP subsystem
                     13             log audit (note 1)
                     14             log alert (note 1)
                     15             clock daemon (note 2)
                     16             local use 0  (local0)
                     17             local use 1  (local1)
                     18             local use 2  (local2)
                     19             local use 3  (local3)
                     20             local use 4  (local4)
                     21             local use 5  (local5)
                     22             local use 6  (local6)
                     23             local use 7  (local7)

                   Note 1 - Various operating systems have been found to utilize
                      Facilities 4, 10, 13 and 14 for security/authorization,
                      audit, and alert messages which seem to be similar.
                   Note 2 - Various operating systems have been found to utilize
                      both Facilities 9 and 15 for clock (cron/at) messages.

            Severity的定義如下:

                   Numerical         Severity
                    Code

                     0       Emergency: system is unusable
                     1       Alert: action must be taken immediately
                     2       Critical: critical conditions
                     3       Error: error conditions
                     4       Warning: warning conditions
                     5       Notice: normal but significant condition
                     6       Informational: informational messages
                     7       Debug: debug-level messages

            也就是說,尖括號中有1~3個數字字符,只有當數字是0的時候,數字才以0開頭,也就是說00和01這樣在前面補0是不允許的。

            2.2、HEADER部分
            HEADER部分包括兩個字段,時間和主機名(或IP)。
            時間緊跟在PRI后面,中間沒有空格,格式必須是“Mmm dd hh:mm:ss”,不包括年份。“日”的數字如果是1~9,前面會補一個空格(也就是月份后面有兩個空格),而“小時”、“分”、“秒”則在前面補“0”。月份取值包括:
            Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec

            時間后邊跟一個空格,然后是主機名或者IP地址,主機名不得包括域名部分。

            因為有些系統需要將日志長期歸檔,而時間字段又不包括年份,所以一些不標準的syslog格式中包含了年份,例如:
            <165>Aug 24 05:34:00 CST 1987 mymachine myproc[10]: %% It's
            time to make the do-nuts. %% Ingredients: Mix=OK, Jelly=OK #
            Devices: Mixer=OK, Jelly_Injector=OK, Frier=OK # Transport:
            Conveyer1=OK, Conveyer2=OK # %%
            這樣會導致解析程序將“CST”當作主機名,而“1987”開始的部分作為MSG部分。解析程序面對這種問題,可能要做很多容錯處理,或者定制能解析多種syslog格式,而不僅僅是只能解析標準格式。

            HEADER部分后面跟一個空格,然后是MSG部分。
            有些syslog中沒有HEADER部分。這個時候MSG部分緊跟在PRI后面,中間沒有空格。

            2.3、MSG部分
            MSG部分又分為兩個部分,TAG和Content。其中TAG部分是可選的。
            在前面的例子中(“<30>Oct 9 22:33:20 hlfedora auditd[1787]: The audit daemon is exiting.”),“auditd[1787]”是TAG部分,包含了進程名稱和進程PID。PID可以沒有,這個時候中括號也是沒有的。
            進程PID有時甚至不是一個數字,例如“root-1787”,解析程序要做好容錯準備。

            TAG后面用一個冒號隔開Content部分,這部分的內容是應用程序自定義的。


            3、RFC3195
            BSD syslog協議使用UDP協議在網絡中傳遞,然而UDP是一個不可靠的協議,并且syslog也沒有要求接收方有所反饋。為了解決這個問題,RFC又定義了一個新的規范來可靠的傳遞syslog消息,它使用TCP協議:
            http://www.ietf.org/rfc/rfc3195.txt
            不過大多數情況下,使用UDP發送不需要確認的syslog消息,已經能夠滿足要求了,并且這樣做非常簡單。因此到目前為止,RFC3195的應用還是很少見的

            posted on 2010-11-17 16:00 八葉草 閱讀(1663) 評論(0)  編輯 收藏 引用 所屬分類: log

            久久强奷乱码老熟女| 色综合久久无码中文字幕| 久久国产精品视频| 久久综合久久性久99毛片| 99久久做夜夜爱天天做精品| 伊人色综合久久天天人手人婷| 久久久久久久久无码精品亚洲日韩| 久久99免费视频| 亚洲欧洲久久av| 国产V综合V亚洲欧美久久| 国产精品99久久久久久董美香| 久久99国产精品久久99小说| 精品久久久久久中文字幕| 久久99精品免费一区二区| 人妻少妇久久中文字幕| 久久久久18| 国内精品久久久久久野外| 狠狠综合久久AV一区二区三区| 久久国产成人| 狠狠色丁香久久婷婷综| 亚洲精品白浆高清久久久久久| 青青热久久国产久精品 | 国产精品一久久香蕉产线看| 免费一级做a爰片久久毛片潮| 久久国产一区二区| 国产精品国色综合久久| 无码人妻久久一区二区三区| 武侠古典久久婷婷狼人伊人| 久久久久亚洲AV无码去区首| 国产成人久久精品二区三区| 久久精品成人免费网站| 久久A级毛片免费观看| 亚洲va国产va天堂va久久| 性做久久久久久久久浪潮| 久久国产热这里只有精品| 91久久精品国产91性色也| 久久成人影院精品777| 久久国产精品久久精品国产| 精品久久久久久综合日本| 69久久夜色精品国产69| 久久最近最新中文字幕大全 |