log4delphi使用及UDP上传日志扩展详解
来源:互联网 发布:java socket编程 编辑:程序博客网 时间:2024/06/06 10:41
Log4Delphi是一个开放源码项目,旨在制作用于Borland的Delphi高质量实用的日志套件,是基于Apache Software Foundation的log4j包。虽然这个项目已随着delphi“过时”,它最后一次更新在2006年,但是他具有logging的一贯风格,对于还在使用delphi的同鞋们还是可以考虑一下的。以下是我使用后,整理的一点资料及一个UDPSocket日志上传的扩展,仅供参考。
1 下载及安装
1. 从http://sourceforge.net/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"→"EnvironmentOptions"→"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"→"ViewSource",添加初始化日志等,代码如下:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
programProject1;
uses
Forms,
TConfiguratorUnit,{需要引用该单元}
Unit1in'Unit1.pas'{Form1};
{$R*.res}
begin
Application.Initialize;
doPropertiesConfiguration('log4delphi.properties');{初始化,读取属性}
Application.CreateForm(TForm1,Form1);
Application.Run;
end.
3. 将"...\log4delphi-0.8\example\log4delphi.properties"复制到工程目录下;
4. 在窗体上放置两个按钮,单击事件和窗体的销毁事件如下:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
implementation
usesTLoggerUnit;{需引用此单元}
{$R*.dfm}
procedureTForm1.btn1Click(Sender:TObject);
begin
TLogger.GetInstance.Debug('按钮1被点了');{获取TLogger实例}
end;
procedureTForm1.btn2Click(Sender:TObject);
begin
TLogger.GetInstance.Info('按钮2也被点了');{包括:Fatal、Error、Warn、Info、Debug、Trace}
end;
procedureTForm1.FormDestroy(Sender:TObject);
begin
TLogger.FreeInstances;{在不需要使用的时候,释放掉}
end;
5. 运行程序,点击按钮一和按钮二,关闭程序。在工程目录下,发现会有"app.log"文件,打开如下所示:
3 配置文件详解
3.1实例
log4delphi.rootLogger=ALL,fileAppender,fileAppender2
#自动分文件输出
log4delphi.appender.fileAppender=TRollingFileAppender
log4delphi.appender.fileAppender.File=D:\\java\\logs\\qc.log
log4delphi.appender.fileAppender.layout=TPatternLayout
log4delphi.appender.fileAppender.layout.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
log4delphi.appender.fileAppender2.layout=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. 简化格式
log4delphi.appender.fileAppender.layout=TSimpleLayout
2. xml格式
log4delphi.appender.fileAppender.layout=TXMLLayout
3. htmls格式
log4delphi.appender.fileAppender.layout=THTMLLayout
#log4delphi.appender.fileAppender.layout.Title=DocumentTitle
4. 自定义格式
#log4delphi.appender.fileAppender.layout=TPatternLayout
#log4delphi.appender.fileAppender.layout.Pattern=%d{ddmmm yyyy hh:nn:ss:zzz} [%5p] %m%n
关于配制说明:
%d 日期
%m 消息内容
%n 换行
%p 优先级
%e 异常的类名与message
%L Logger的名称
4 Delphi中代码的编写
1. 日志文件的引用
在程序文件project中增加TConfiguratorUnit的引用
2. 日志初始化设置
doPropertiesConfiguration('log4delphi.properties');
3. 日志输出代码
TLogger.GetInstance.Info('按钮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
log4delphi.appender.fileAppender.layout=TXMLLayout
#自定义日志处理logger1
log4delphi.logger.Logger1=WARN,fileAppender2
log4delphi.appender.fileAppender2=TFileAppender
log4delphi.appender.fileAppender2.File=app2.log
log4delphi.appender.fileAppender2.layout=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.log
log4delphi.appender.fileAppender.layout=TPatternLayout
log4delphi.appender.fileAppender.layout.Pattern=[JY] [%d{yyyy-MM-ddHH: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
log4delphi.appender.upd.layout=TPatternLayout
log4delphi.appender.upd.layout.Pattern=[JY] [%d{yyyy-MM-dd HH:mm:ss,SSS}] [%p][%e] [%L] %m%n
2. 写测试upd服务
procedureTForm1.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服务器端效果
文件中效果
- log4delphi使用及UDP上传日志扩展详解
- Delphi 7下使用Log4Delphi 0.8日志组件
- Delphi 7下使用Log4Delphi 0.8日志组件
- Delphi 7下使用Log4Delphi 0.8日志组件
- Delphi 7下使用Log4Delphi 0.8日志组件
- Delphi 7下使用Log4Delphi 0.8日志组件
- Log4delphi使用心得
- Log4delphi使用心得
- Log4Delphi
- 没落的delphi的日志类log4delphi
- Log4net系列:如何使用Log4net创建日志及简单扩展
- log4j.xml配置详解及log4j日志使用详解
- JQuery上传插件Uploadify使用详解及错误处理
- JQuery上传插件Uploadify使用详解及错误处理
- JQuery上传插件Uploadify使用详解及错误处理
- JQuery上传插件Uploadify使用详解及错误处理
- JQuery上传插件Uploadify使用详解及错误处理
- JQuery上传插件Uploadify使用详解及错误处理
- mini2440按键驱动-----2.4内核,有poll
- linux版本Sublime Text 2编辑器(嵌入式工具集合)
- 搞笑
- 《C#入门到精通》学习笔记 -- Console类
- C#入门学习 简单控件、连接数据库
- log4delphi使用及UDP上传日志扩展详解
- 字符串调整为RGB的顺序
- java分布式系统通信框架
- 1016 Prime Ring Problem 搜索(深搜)
- 在字符串中找出连续最长的数字串
- IOS6.1系统日程事件的新增代码
- <Unity3D>Unity3D的四种坐标系
- C++类型转换(Type Casting)
- JPA @PersistenceContext及@Transactional Annotation