1 簡介
日志系統是一種不可或缺的跟蹤調試工具,特別是在任何無人職守的后臺程序以及那些沒有跟蹤調試環境的系統中有著廣泛的應用。長期以來,日志系統作為一種應用程序服務,對于跟蹤調試、程序狀態記錄、崩潰數據恢復都有非常現實的意義。這種服務通常以兩種方式存在:
日志系統作為服務進程存在。Windows中的的事件日志服務就屬于這種類型,該類型的日志系統通常通過消息隊列機制將所需要記錄的日志由日志發送端發送給日志服務。日志發送端和日志保存端通常不在同一進程當中,日志的發送是異步過程。這種日志服務通常用于管理員監控各種系統服務的狀態。
日志系統作為系統調用存在。Java世界中的日志系統和Unix環境下諸多守護進程所使用的日志系統都屬于這種類型。日志系統的代碼作為系統調用被編譯進日志發送端,日志系統的運行和業務代碼的運行在同一進程空間。日志的發送多數屬于同步過程。這種日志服務由于能夠同步反映處系統運行狀態,通常用于調試跟蹤和崩潰恢復。
本文建立的日志系統基本屬于第二種類型,但又有所不同。該日志系統將利用Java線程技術實現一個既能夠反映統一線程空間中程序運行狀態的同步日志發送過程,又能夠提供快速的日志記錄服務,還能夠提供靈活的日志格式配置和過濾機制。
系統調試的誤區
在控制臺環境上調試Java程序時,此時往控制臺或者文本文件輸出一段文字是查看程序運行狀態最簡單的做法,但這種方式并不能解決全部的問題。有時候,對于一個我們無法實時查看系統輸出的系統或者一個確實需要保留我們輸出信息的系統,良好的日志系統顯得相當必要。
因此,不能隨意的輸出各種不規范的調試信息,這些隨意輸出的信息是不可控的,難以清除,可能為后臺監控、錯誤排除和錯誤恢復帶來相當大的阻力。
日志系統框架的基本功能
一個完備的日志系統框架通常應當包括如下基本特性:
所輸出的日志擁有自己的分類。這樣在調試時便于針對不同系統的不同模塊進行查詢,從而快速定位到發生日志事件的代碼。
日志按照某種標準分成不同級別。分級以后的日志,可以用于同一分類下的日志篩選。
支持多線程。日志系統通常會在多線程環境中使用,特別是在Java系統當中,因此作為一種系統資源,日志系統應當保證是線程安全的。
支持不同的記錄媒介。不同的工程項目往往對日志系統的記錄媒介要求不同,因此日志系統必須提供必要的開發接口,以保證能夠比較容易的更換記錄介質。
高性能。日志系統通常要提供高速的日志記錄功能以應對大系統下大請求流量下系統的正常運轉。
穩定性。日志系統必須是保持高度的穩定性,不能因為日志系統內部錯誤導致主要業務代碼的崩潰。
常用日志系統簡介
在Java世界中,以下三種日志框架比較優秀:
1) Log4J
最早的Java日志框架之一,由Apache基金會發起,提供靈活而強大的日志記錄機制。但是其復雜的配置過程和內部概念往往令使用者望而卻步。
2) JDK1.4 Logging Framework
繼Log4J之后,JDK標準委員會將Log4J的基本思想吸收到JDK當中,在JDK1.4中發布了第一個日志框架接口,并提供了一個簡單實現。
3) Commons Logging Framwork
該框架同樣是Apache基金會項目,其出現主要是為了使得Java項目能夠在Log4J和JDK1.4 l Logging Framework的使用上隨意進行切換,因此該框架提供了統一的調用接口和配置方法。
http://www.dezai.cn/Article_Show.asp?ArticleID=11489&ArticlePage=1
Author: orangelizq
email: orangelizq@163.com
posted on 2007-07-22 14:42
桔子汁 閱讀(436)
評論(0) 編輯 收藏 所屬分類:
J2EE