Log4delphi使用心得


======================================================
注:本文源代码点此下载
======================================================

log4delphi试用

因为delphi不是我的主力开发工具,所有一直没有使用一个正式的日志组件。

偶尔要记日志时,就复制同事的一个简单的文件日志函数。

现在又要用到delphi日志了,决定找个通用的日志组件,造福共事的delphi程序员们。

让我失望的是,日志功能好像对delphi程序员没什么吸引力,

百度“delphi 日志”竟然没有什么有用线索。还是google“delphi logger”有点用。

不管怎样,让我找到了log4delphi。明显国内用的人不多,不知大家是否有更好的日志类。

对我来说,log4delphi与log4j、log4cpp如出一辙,正合我意。

0.7版,近两年没更新了。看svn也是没有任何更新。

下载了看,文档相当全。

因为用d6,而bin包只有d7的,所以自己需要编译一个包。编译时注意:

* 有std和prof两个版本的*.dpk,比较一下,std没有rollingappender,看来prof全一点。

* 参考编译出错信息,需手工创建build目录。

* 编译报util/tfileunit文件未找到,直接删了它就好了,没用。

可能用它自带的makefile更快更好,但好像makefile是对d7的,也要改。

顺便安装包,并添加lib目录。

delphi盒子网站上有个log4delphi v0.7 修改版,据称发现并改正了内存泄漏。

http://www.2ccc.com/article.asp?articleid=3900

我也下载查看了,觉得没改全,发了个评论。决定暂时用原版。

接下来就可以按照它的get started和tutorial试用了。

get started例子:

日志文件在写时,无法共享读取,不能实时查看日志。

日志文件名必须是完整路径,不能仅是文件名,也不能‘./test.log’这样。

tfileappender创建时会清空文件,而不是append。

tutorial例子:

tconfiguratorunit.dopropertiesconfiguration('log4delphi.properties');

同样使用tfileappender时却没有打开日志文件时的共享违例。

仅配置rootlogger,没有配置sublogger时,sublogger无输出。与log4j不同。

转载自:http://blog.csdn.net/brightgems/archive/2006/06/19/814042.aspx

log4d是apache下的一个delphi开源子项目,它的设计思想来源于log4j,但并不是log4j的子项目,主要目标是开发环境与生产环境下的日志输出。

一、下载

https://sourceforge.net/project/showfiles.php?group_id=145326

二、安装

将源代码下的log4delphi\src\delphi\log4delphi_d6.dpk包安装在ide下。

三、基本使用方法

1.在dpr文件的source 中创建logger实例(tconfiguratorunit.dobasicconfiguration)

如:

application.initialize;

//使用运行期默认配置,输出日志文件名是'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信息

根据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 都有一个优先级,levels就是用来表示优先级的。因此,每一个优先级其实就是一个数值常量,可用于比较。

level有以下几种:

tlevelunit.off

tlevelunit.fatal

tlevelunit.error

tlevelunit.warn

tlevelunit.info

tlevelunit.debug

tlevelunit.all

2.loggingevents.当产生一个log信息或logger实例创建时发生。

logging 包含的重要信息有:发生时间,消息内容,已经发生的异常及优先级。

3. layouts.它负责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

输出内容如:debug - button clicked

l tpatternlayout.它为格式化输出提供了更多的控制。格式化的模式与format函数相似,即以%开头,接着跟修饰符和转换符。如:

pattern="%d [%5p] %m%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 换行

%p 优先级

%e 异常的类名与message

%l logger的名称

4. appenders.表示输出的目的是控制台,文件,还是数据库。

常用的有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 设置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博客,转载请标明出处:http://blog.csdn.net/brightgems/archive/2006/06/19/814042.aspx

上面都是参考资料,下面是我自己使用过程中使用的过程:

1:安装prof这个版本,通过文件对比可看出该版本应用的文件多点,可能会更好(猜的)。

2:添加源码以及dcu路径。(在工具->环境选项->library path中加入该两个路径:“src\delphi”、“build”)。

3:在application.initialize;的后面调用dopropertiesconfiguration('log4delphi.properties'); 去读取配置并初始化log4。(注意,该方法在tconfiguratorunit单元中,需要use该单元)

4:将log4delphi.properties放入应用程序同一目录下。log4delphi.properties可从下载包中得到。

5:调用log4的记录方法:tlogger.getinstance.debug('button clicked!');(需要引入tloggerunit单元)。

执行的话基本上都能在程序所在的目录下有个*.log文件。

6:释放掉tlogger的对象:在不用tlogger对象时释放:tlogger.freeinstances;(一般在程序退出的时候要把该对象释放掉)

有关配置文件中一个要注意的地方:

代码

#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

这样配置才能把时间按照{}的格式进行日志输出。由于该log4delphi的配置资料基本上没有,因此,该配置需要看源码才能知道有哪些配置该怎么设置。目前我还不知道如何让日志文件按照时间格式来自动生成出来,我怀疑,它会根据设置的容量,自动把历史数据保存到另外一个以保存日期为名称的文件。有待日后验证。

今天早上测试了下,发现有如下一个配置:

代码

#定义日志记录的类型

#log4delphi.appender.fileappender=tfileappender

log4delphi.appender.fileappender=trollingfileappender

log4delphi.appender.fileappender.maxbackupindex=20

log4delphi.appender.fileappender.maxfilesize=3m

log4delphi.appender.fileappender.file=app.log

log4delphi.appender.fileappender.appdir=true

log4delphi.appender.fileappender.append=true

fileappender=trollingfileappender这个配置才会实现超出maxfilesize时,会把日志根据大小自动分割后保存到后缀为*.log.1、*.log.2类似的文件。如果没猜错,maxbackupindex这个属性应该是*.log.?这个?的值了。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
日志组件log4delphilog4jlog4cpp如出一辙 1.安装:log4Delphi无需安装,直接解压包解压后放入任意目录(我的目录是:'D:/3rdlib/delphi/log4delphi-0.7)即可。 2.使用:在工程文件中引用解压包中src目录下所有的*.pas文件,如下: uses Forms, Unit1 in 'Unit1.pas' {Form1}, TAppenderUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TAppenderUnit.pas', TBDELogInserterUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TBDELogInserterUnit.pas', TConfiguratorUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TConfiguratorUnit.pas', TConsoleUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TConsoleUnit.pas' {TConsole}, TDBAppenderUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TDBAppenderUnit.pas', TDBLogInserterUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TDBLogInserterUnit.pas', TDBXLogInserterUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TDBXLogInserterUnit.pas', TErrorHandlerUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TErrorHandlerUnit.pas', TFileAppenderUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TFileAppenderUnit.pas', THTMLLayoutUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/THTMLLayoutUnit.pas', TIBXLogInserterUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TIBXLogInserterUnit.pas', TLayoutUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TLayoutUnit.pas', TLevelUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TLevelUnit.pas', TLoggerUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TLoggerUnit.pas', TLoggingEventUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TLoggingEventUnit.pas', TLogLogUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TLogLogUnit.pas', TNullAppenderUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TNullAppenderUnit.pas', TOnlyOnceErrorHandlerUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TOnlyOnceErrorHandlerUnit.pas', TOptionConverterUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TOptionConverterUnit.pas', TPatternLayoutUnit in 'D:/3rdlib/delphi/log4delphi-0.7/src/delphi/TPatternLayoutUnit.pas', TPropert

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值