簡介
異常記錄是指計算機系統用於記錄異常數據項的集合。在計算機系統中,異常記錄一般保存在日誌檔案中,即對異常記錄分析,通過調用有關的日誌檔案即可。異常記錄保存和分析能幫助人們進一步發現軟體系統和硬體的不足,促進對系統的最佳化。在實際套用中,異常記錄有時是指系統收集某些記錄與實際記錄不符合,例如收集氣象有關記錄時,經常會出現一些異常記錄。
日誌檔案
在計算機領域,日誌檔案(logfile)是一個記錄了發生在運行中的作業系統或其他軟體中的事件的檔案,或者記錄了在網路聊天軟體的用戶之間傳送的訊息。日誌記錄(Logging)是指保存日誌的行為。最簡單的做法是將日誌寫入單個存放日誌的檔案。許多作業系統、軟體框架和程式都包含日誌系統。廣泛使用的一項日誌標準是syslog,它在網際網路工程任務組(IETF)的RFC 5424中定義。syslog標準使專門的標準化子系統得以生成、過濾、記錄和分析日誌訊息。這可以減輕軟體開發人員設計和編寫自己的臨時日誌系統的難度。運行日誌檔案主要分為兩種格式: 以記錄為單位的運行日誌檔案和以數據塊為單位的運行日 志檔案。以記錄為單位的日誌檔案需要登記的內容包 括: 各個事務的開始標記,各個事務的結束標記,各個事務的所有更新操作。每個事務開始的標記、 結束標記和每個更新操作均作為日誌檔案中的一個 日誌記錄。日誌記錄的內容包括: 事務標識、操作 的類型(插入、刪除或者修改)、操作對象(記錄內部 標識)、更新前數據的舊值、更新後數據的新值。以數據塊為單位的日誌檔案記錄的內容包括事 務標識和被更新的數據塊。由於將更新前的整個塊 和更新後的整個塊都放入日誌檔案中,操作的類型 和操作對象等信息就不必放入日誌記錄中 。日誌一般可以分為事件日誌、事務日誌和訊息日誌。
事件日誌(Event logs)記錄了在系統運行期間發生的事件,以便於了解系統活動和診斷問題。它對於了解複雜系統的活動軌跡至關重要,尤其是只有很少用戶互動的應用程式(例如伺服器應用程式)。集成多個來源的日誌檔案條目也是有用的。這種方法通過集成的統計數據分析,可能揭示出不同伺服器上看似不相關的事件的相關性。其他解決方案則採用網路範圍的查詢與報告機制。
大多數資料庫系統都維護某種事務日誌(transaction log),它們的作用並不是為了後續分析的審計活動,也不是為了便於人類閱讀。這些日誌記錄了對存儲數據的更改,以允許資料庫在發生崩潰或其他數據錯誤後恢復並維護存儲數據的一致狀態。因此資料庫系統通常具有常規事件日誌與事務日誌。
訊息日誌:網際網路中繼聊天(IRC)、即時通信(IM)、有聊天功能的點對點網路檔案共享客戶端,以及多人電子遊戲遊戲(尤其是MMORPG)通常都有自動記錄(保存)文本通信的功能,無論它是用戶之間的公開還是私密通信。訊息日誌一般都是普通的純文本檔案,但即時通信和VoIP客戶端(支持文字聊天,例如Skype)也可能使用HTML或某種自定義格式保存它們,以便於閱讀或加密。
記錄
記錄是一組相關數據項的集合,用於描述一個對象在某方面的屬性。一個記錄應包含哪些數據項,取決於需要描述對象的哪個方面。而一個對象,由於他所處的環境不同可把他作為不同的對象。例如,一個學生,當把他作為班上的一名學生時,對他的描述應使用學號、姓名、年齡及所在系班,也可能還包括他所學過的課程的名稱、成績等數據項。但若把學生作為一個醫療對象時,對他描述的數據項則應使用諸如病歷號、姓名、性別、出生年月、身高、體重、血壓及病史等項。在諸多記錄中,為了能惟一地標識一個記錄,必須在一個記錄的各個數據項中,確定出一個或幾個數據項,把它們的集合稱為關鍵字(key)。或者說,關鍵字是惟一能標識一個記錄的數據項。通常,只需用一個數據項作為關鍵字。例如,前面的病歷號或學號便可用來從諸多記錄中標識出惟一的一個記錄。然而有時找不到這樣的數據項,只好把幾個數據項定為能在諸多記錄中惟一地標識出某個記錄的關鍵字 。
異常處理
異常處理,是程式語言或計算機硬體里的一種機制,用於處理軟體或信息系統中出現的異常狀況(即超出程式正常執行流程的某些特殊條件)。異常處理作為一種有效的軟體容錯機制一直得到學術界和工業界的廣泛研究和套用 。各種程式語言在處理異常方面具有非常顯著的不同點(錯誤檢測與異常處理區別在於:錯誤檢測是在正常的程式流中,處理不可預見問題的代碼,例如一個調用操作未能成功結束)。某些程式語言有這樣的函式:當輸入存在非法數據時不能被安全地調用,或者返回值不能與異常進行有效的區別。例如,C語言中的atoi函式(ASCII串到整數的轉換)在輸入非法時可以返回0。在這種情況下編程者需要另外進行錯誤檢測(可能通過某些輔助全局變數如C的errno),或進行輸入檢驗(如通過正則表達式),或者共同使用這兩種方法。通過異常處理,我們可以對用戶在程式中的非法輸入進行控制和提示,以防程式崩潰。從進程的視角,硬體中斷相當於可恢復異常,雖然中斷一般與程式流本身無關。
從子程式編程者的視角,異常是很有用的一種機制,用於通知外界該子程式不能正常執行。如輸入的數據無效(例如除數是0),或所需資源不可用(例如檔案丟失)。如果系統沒有異常機制,則編程者需要用返回值來標示發生了哪些錯誤。