log4delphi使用及UDP上传日志扩展详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
log4delphi使用及UDP上传日志扩展详解
log4delphi使用及UDP上传日志扩展详解
作者:黄克涛时间:2013年4月17日
Log4Delphi是一个开放源码项目,旨在制作用于Borland的Delphi高质量实用的日志套件,是基于Apache Software Foundation的log4j包。
虽然这个项目已随着delphi“过时”,它最后一次更新在2006年,但是他具有logging的一贯风格,对于还在使用delphi的同鞋们还是可以考虑一下的。
以下是我使用后,整理的一点资料及一个UDPSocket日志上传的扩展,仅供参考。
1下载及安装
1.从/projects/log4delphi/files/下载0.8版本,解压到文件夹。
2.打开文件夹"...\log4delphi-0.8",新建一个文件夹"build";
3.运行Delphi 7,打开组件包"log4delphi_D7_STD.dpk",位于"...\log4delphi-0.8\src\delphi"
下,点击"Compile"和"Install"进行编译安装;
4.菜单"Tools"→"Environment Options"→"Library"→"Library path",添加
"...\log4delphi-0.8\build"目录(如果需要连接源代码,则再添加
"...\log4delphi-0.8\src\delphi"和"...\log4delphi-0.8\src\delphi\util");
安装包说明:
bin/ 项目二进制文件(无用).
build/ 项目编译文件目录(需要自行添加).
docs/ 文档目录(无用).
example/ 配置文件实例.
lib/ 测试单元所需要包(无用).
src/ Log4Delphi项目代码.
2初次试用
1.新建一个应用程序,保存当前工程。
2.菜单"Project"→"View Source",添加初始化日志等,代码如下:
3.将"...\log4delphi-0.8\example\log4delphi.properties"复制到工程目录下;
4.在窗体上放置两个按钮,单击事件和窗体的销毁事件如下:
5.运行程序,点击按钮一和按钮二,关闭程序。
在工程目录下,发现会有"app.log"文件,打开如
下所示:
3配置文件详解
3.1实例
log4delphi.rootLogger=ALL,fileAppender, fileAppender2
#自动分文件输出
log4delphi.appender.fileAppender=TRollingFileAppender
log4delphi.appender.fileAppender.File=D:\\java\\logs\\qc.lo g
yout=TPatternLayout
yout.Pattern=[JY]
[%d{yyyy-MM-dd HH:mm:ss,SSS}] [%p] [%e] [%L] %m%n #固定文件输出
log4delphi.appender.fileAppender2=TFileAppender
log4delphi.appender.fileAppender2.File=app2.log
yout=TXMLLayout
3.2日志设置
log4delphi.rootLogger=DEBUG, fileAppender,fileAppender2此句为将等级为INFO的日志信息输出到fileAppender和fileAppender2这两个目的地,fileAppender和fileAppender2可以任意起名。
等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示,一
般只使用ERROR、WARN、INFO、DEBUG四级。
各级别说明:
OFF 关闭所有日志
FATAL 灾难性错误
ERROR 为严重错误主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
ALL 开启所有信息
3.3输出方式设置
目前该版的输出包括三种方式:TFileAppender、TRollingFileAppender和TDBAppender,其中TDBAppender属于未完成的模式,在此不作说明。
1.固定文件输出
log4delphi.appender.fileAppender2=TFileAppender
log4delphi.appender.fileAppender.File=app.log
log4delphi.appender.fileAppender.AppDir=true
log4delphi.appender.fileAppender.Append=true
2.自动分文件输出
log4delphi.appender.fileAppender=TRollingFileAppender
log4delphi.appender.fileAppender.MaxBackupIndex=3
log4delphi.appender.fileAppender.MaxFileSize=1M
log4delphi.appender.fileAppender.Append=true
3.4布局
1.简化格式
yout=TSimpleLayout
2.xml格式
yout=TXMLLayout
3.htmls格式
yout=THTMLLayout
#yout.Title=Document Title
4.自定义格式
#yout=TPatternLayout #yout.Pattern=%d{dd mmm yyyy hh:nn:ss:zzz} [%5p] %m%n
关于配制说明:
%d 日期
%m 消息内容
%n 换行
%p 优先级
%e 异常的类名与message
%L Logger的名称
4Delphi中代码的编写
1.日志文件的引用
在程序文件project中增加TConfiguratorUnit的引用
2.日志初始化设置
doPropertiesConfiguration('log4delphi.properties');
3.日志输出代码
('按钮1被点了');
TLogger.GetInstance.Error('按钮1被点了');
TLogger.GetInstance.Debug('按钮1被点了');
5多个日志处理器的设置
1.配置文件
#默认日志处理root
log4delphi.rootLogger=ALL,fileAppender
log4delphi.appender.fileAppender =TFileAppender
log4delphi.appender.fileAppender.File=app2.log
yout=TXMLLayout
#自定义日志处理logger1
log4delphi.logger.Logger1=WARN, fileAppender2
log4delphi.appender.fileAppender2=TFileAppender
log4delphi.appender.fileAppender2.File=app2.log
yout=TXMLLayout
2.代码使用
TLogger.GetInstance(‘root’).Debug('按钮1被点了');
TLogger.GetInstance(‘logger1’).Debug('按钮1被点了');
6自定义UDP日志输出
6.1增加UDP输出处理类文件
6.2修改配置引导
在输出处理配置类中添加相应处理方法,修改TPropertyConfiguratorUnit.pas如下两处。
1.增加引入类
2.在输出初始化方法中增加UPD的初始化处理
在function InstantiateAppender(AName : String; AProps : TProperties;APrefix : String) : IAppender;的最后一行result := appender;之前增加如下代码:
//upd
if (Pos('UDPAppender',AName) > 0) then
begin
appender := TUDPAppender.Create;
tmp := AProps.GetProperty(APrefix + '.Host');
if (tmp <> '') then
begin
TUDPAppender(appender).SetHost(tmp);
TLogLog.debug(AName+' - Host');
end;
tmp := AProps.GetProperty(APrefix + '.Port');
if (tmp <> '') then
begin
TUDPAppender(appender).SetPort(StrToInt(tmp)); TLogLog.debug(AName+' - Port');
end;
end;
6.3重新编译
1.打开log4delphi_D7_STD.dpk
2.添加TUDPAppenderUnit.pas
3.点击"Compile"编译
4.点击"Install"安装
6.4测试及事例
1.配置文件
log4delphi.rootLogger=ALL,upd,fileAppender
log4delphi.appender.fileAppender=TRollingFileAppender
log4delphi.appender.fileAppender.File=D:\\java\\logs\\qc.lo g
yout=TPatternLayout
yout.Pattern=[JY]
[%d{yyyy-MM-dd HH:mm:ss,SSS}] [%p] [%e] [%L] %m%n log4delphi.appender.upd=TUDPAppender
log4delphi.appender.upd.Host=127.0.0.1
log4delphi.appender.upd.Port=9100
yout=TPatternLayout
yout.Pattern=[JY] [%d{yyyy-MM-dd HH:mm:ss,SSS}] [%p] [%e] [%L] %m%n
2.写测试upd服务
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
strStream:TStringStream;
begin
strStream := TStringStream.Create(''); strStream.CopyFrom(AData,AData.Size);
memo1.Lines.Add(strStream.DataString); end;
3.执行效果
upd服务器端效果
文件中效果。