守護進程之出錯記錄

來源:互聯網
上載者:User

與守護進程有關的一個問題是如何處理出錯訊息。因為它沒有控制終端,所以不能只是簡單地寫到標準出錯上。在很多工作站上,控制台裝置運行一個視窗系統,所以我們不希望所有守護進程都寫到控制台裝置上。我們也不希望每個守護進程將它自己的出錯訊息寫到一個單獨的檔案中。對系統管理人員而言,如果要關心哪一個守護進程寫到哪一個記錄檔案中,並定期地檢查這些檔案,那麼一定會使他感到頭痛。所以,需要有一個集中的守護進程出錯記錄設施

自4.2BSD以來,BSD syslog設施得到了廣泛的應用。大多數守護進程使用這一設施。圖13-1顯示了syslog設施的詳細組織圖。

openlog( *ident, option, syslog( priority, * closelog( setlogmask(

調用openlog是可選擇的。如果不調用openlog,則在第一次調用syslog時,自動調用openlog。調用closelog也是也選擇的——它只是關閉曾被用於與syslog守護進程通訊的描述符。

調用openlog使我們可以指定一個ident,將它加至每則日誌訊息中。ident一般是程式的名稱(例如,cron、inetd等)。option參數是指定許多選項的位屏蔽。表13-1說明了可用的option(選項)。若某選項在Single UNIX Specification的openlog定義中已包括,則其XSI列用一個墨點表示。

                                                   表13-1 openlog的option參數

, filename

第一個調用將ident字串設定為程式名,指定列印該進程ID,並且將系統預設的facility設定為行式印表機系統。對syslog的調用指定一個出錯狀態和一個訊息字串。如若不調用openlog,則第二個調用的形式可能是:

syslog(LOG_ERR | LOG_LPR, , filename);

其中,將priority參數指定為level和facility的組合。

除了syslog,很多平台還提供它的一種變體處理可變參數列表。

#include <syslog.h><stdarg.h> vsyslog( priority,   *format, va_list arg);

大多數syslog實現將使訊息短時間處於隊列中。如果在此段時間中到達了重複訊息,那麼syslog守護進程將不把它寫到日記記錄中,而是列印輸出一條訊息,類似於“上一條訊息重複了N次”。

本篇博文內容摘自《UNIX環境進階編程》(第二版),僅作個人學習記錄所用。關於本書可參考:http://www.apuebook.com/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.