小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Log4delphi使用心得

 zengbj 2010-08-03

log4delphi試用

因為delphi不是我的主力開發(fā)工具,所有一直沒有使用一個正式的日志組件。
偶爾要記日志時,就復(fù)制同事的一個簡單的文件日志函數(shù)。
現(xiàn)在又要用到delphi日志了,決定找個通用的日志組件,造福共事的Delphi程序員們。

讓我失望的是,日志功能好像對Delphi程序員沒什么吸引力,
百度“Delphi 日志”竟然沒有什么有用線索。還是Google“Delphi logger”有點用。

不管怎樣,讓我找到了log4delphi。明顯國內(nèi)用的人不多,不知大家是否有更好的日志類。
對我來說,log4delphi與log4j、log4cpp如出一轍,正合我意。
0.7版,近兩年沒更新了??碨VN也是沒有任何更新。
下載了看,文檔相當(dāng)全。


因為用D6,而bin包只有D7的,所以自己需要編譯一個包。編譯時注意:
 
  * 有STD和PROF兩個版本的*.dpk,比較一下,STD沒有RollingAppender,看來PROF全一點。
  * 參考編譯出錯信息,需手工創(chuàng)建build目錄。
  * 編譯報util/TFileUnit文件未找到,直接刪了它就好了,沒用。

可能用它自帶的Makefile更快更好,但好像Makefile是對D7的,也要改。
順便安裝包,并添加lib目錄。

DELPHI盒子網(wǎng)站上有個log4Delphi v0.7 修改版,據(jù)稱發(fā)現(xiàn)并改正了內(nèi)存泄漏。
http://www./article.asp?articleid=3900
我也下載查看了,覺得沒改全,發(fā)了個評論。決定暫時用原版。

接下來就可以按照它的Get Started和Tutorial試用了。

Get Started例子:

日志文件在寫時,無法共享讀取,不能實時查看日志。
日志文件名必須是完整路徑,不能僅是文件名,也不能‘./test.log’這樣。
TFileAppender創(chuàng)建時會清空文件,而不是Append。

Tutorial例子:

TConfiguratorUnit.doPropertiesConfiguration('log4delphi.properties');
同樣使用TFileAppender時卻沒有打開日志文件時的共享違例。

僅配置rootLogger,沒有配置subLogger時,subLogger無輸出。與log4j不同。

 

 

轉(zhuǎn)載自:http://blog.csdn.net/brightgems/archive/2006/06/19/814042.aspx

 

Log4d是apache下的一個delphi開源子項目,它的設(shè)計思想來源于Log4j,但并不是Log4j的子項目,主要目標(biāo)是開發(fā)環(huán)境與生產(chǎn)環(huán)境下的日志輸出。

一、下載
https:///project/showfiles.php?group_id=145326
二、安裝
將源代碼下的log4delphi\src\delphi\log4delphi_D6.dpk包安裝在IDE下。
三、基本使用方法
1.在dpr文件的source 中創(chuàng)建Logger實例(TConfiguratorUnit.doBasicConfiguration)
如:
  Application.Initialize;
//使用運行期默認(rèn)配置,輸出日志文件名是'log4delphi.log’
  TConfiguratorUnit.doBasicConfiguration;
  Application.CreateForm(TForm1, Form1);
  Application.Run; 
2.配置Logger
var
   logger : TLogger;
begin
   logger := TLogger.getInstance;
   logger.setLevel(TLevelUnit.INFO);
   logger.addAppender(TFileAppender.Create('C:\test.log')); 
3.在你需要的地方寫Log信息
根據(jù)Level的類型,有五種類別的Log信息
logger.debug('Debug message');
   logger.info('Info message');
   logger.warn('Warn message');
   logger.error('Error message');
   logger.fatal('Fatal message');
4.釋放Logger實例
Finalization
    TLogger.freeInstances;
四、更深入的介紹
Log4d由五個核心的components組成:Levels, LoggingEvents, Layouts, Appenders and Loggers.
1. Levels。每一個Log event 都有一個優(yōu)先級,Levels就是用來表示優(yōu)先級的。因此,每一個優(yōu)先級其實就是一個數(shù)值常量,可用于比較。
Level有以下幾種:
TLevelUnit.OFF
  TLevelUnit.FATAL
  TLevelUnit.ERROR
  TLevelUnit.WARN
  TLevelUnit.INFO
  TLevelUnit.DEBUG
  TLevelUnit.ALL
2.LoggingEvents.當(dāng)產(chǎn)生一個Log信息或Logger實例創(chuàng)建時發(fā)生。
Logging 包含的重要信息有:發(fā)生時間,消息內(nèi)容,已經(jīng)發(fā)生的異常及優(yōu)先級。
3. Layouts.它負責(zé)LoggingEvents的格式化輸出樣式。
The TLayout 有以下方法:
  function format(event : TLoggingEvent) : String; Virtual; Abstract;
  function getContentType() : String; Virtual;
  function getHeader() : String; Virtual;
  function getFooter() : String; Virtual;
  function ignoresException() : Boolean; Virtual;
常用的Layout有:
l TSimpleLayout
輸出內(nèi)容如:DEBUG - Button Clicked
l TPatternLayout.它為格式化輸出提供了更多的控制。格式化的模式與Format函數(shù)相似,即以%開頭,接著跟修飾符和轉(zhuǎn)換符。如:
Pattern="%d [%5p] %m%n"
產(chǎn)生的輸出是
12/20/2005 4:53:33 PM [DEBUG] Debug message
12/20/2005 4:53:33 PM [ INFO] Info message
12/20/2005 4:53:33 PM [ WARN] Warn message
12/20/2005 4:53:33 PM [ERROR] Error message
12/20/2005 4:53:33 PM [FATAL] Fatal message
含義: %d 日期
 %m 消息內(nèi)容
 %n 換行
 %p 優(yōu)先級
 %e 異常的類名與message
 %L Logger的名稱
4. Appenders.表示輸出的目的是控制臺,文件,還是數(shù)據(jù)庫。
常用的有TFileAppender, TDBAppender

五、配置文件
1.程序里加載配置文件
Application.Initialize;
  TConfiguratorUnit.doPropertiesConfiguration('log4delphi.properties');
  Application.CreateForm(TForm1, Form1);
  Application.Run; 


2.寫配置文件'log4delphi.properties'
l 控制輸出的信息類別
# Set this to true to turn on Log4Delphi's internal
# logging
log4delphi.debug=false
log4delphi.info=false
log4delphi.all=true
l Root Logger
# Set the root logger's priority threshold to DEBUG and assign an
# appender named "fileAppender" to it.
log4delphi.rootLogger=DEBUG, fileAppender
l 配置Appender
# Specify the appender class for fileAppender.
log4delphi.appender.fileAppender=TFileAppender
   
# Specify which file fileAppender should use.
log4delphi.appender.fileAppender.File=app.log
l 設(shè)置Layout
# Specify the layout class for fileAppender.
log4delphi.appender.fileAppender.layout=TSimpleLayout 
# Use TPattern layout
log4delphi.appender.fileAppender.layout=TPatternLayout
log4delphi.appender.fileAppender.layout.pattern=%d [%5p] %m%n

 


本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/brightgems/archive/2006/06/19/814042.aspx

 

上面都是參考資料,下面是我自己使用過程中使用的過程:

1:安裝PROF這個版本,通過文件對比可看出該版本應(yīng)用的文件多點,可能會更好(猜的)。

2:添加源碼以及dcu路徑。(在工具->環(huán)境選項->Library path中加入該兩個路徑:“src\delphi”、“build”)。

3:在Application.Initialize;的后面調(diào)用doPropertiesConfiguration('log4delphi.properties'); 去讀取配置并初始化log4。(注意,該方法在TConfiguratorUnit單元中,需要use該單元)

4:將log4delphi.properties放入應(yīng)用程序同一目錄下。log4delphi.properties可從下載包中得到。

5:調(diào)用log4的記錄方法:TLogger.getInstance.debug('Button Clicked!');(需要引入TLoggerUnit單元)。

執(zhí)行的話基本上都能在程序所在的目錄下有個*.log文件。

6:釋放掉TLogger的對象:在不用TLogger對象時釋放:TLogger.freeInstances;(一般在程序退出的時候要把該對象釋放掉)

有關(guān)配置文件中一個要注意的地方:

 

代碼
#log4delphi.appender.fileAppender.layout=TSimpleLayout
#log4delphi.appender.fileAppender.layout
=TXMLLayout
#log4delphi.appender.fileAppender.layout
=THTMLLayout
#log4delphi.appender.fileAppender.layout.Title
=Document Title
log4delphi.appender.fileAppender.layout
=TPatternLayout
log4delphi.appender.fileAppender.layout.Pattern
=%d{YYYY-MM-DD HH:mm:nn:zzz} [%5p] %m%n

 

這樣配置才能把時間按照{(diào)}的格式進行日志輸出。由于該log4delphi的配置資料基本上沒有,因此,該配置需要看源碼才能知道有哪些配置該怎么設(shè)置。目前我還不知道如何讓日志文件按照時間格式來自動生成出來,我懷疑,它會根據(jù)設(shè)置的容量,自動把歷史數(shù)據(jù)保存到另外一個以保存日期為名稱的文件。有待日后驗證。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多