======================================================
注:本文源代码点此下载
======================================================
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^)/