文件名称:线程安全日志记录器
文件大小:46KB
文件格式:RAR
更新时间:2011-01-31 12:41:44
Delphi File Logger Multithread
(******************************************************************************)
(* 模 块 名: HSLogger4D.Pas *)
(* 别 名: 多任务线程安全日志接口-进程独立版 *)
(* 作 者: Unsigned(僵哥) *)
(* 说 明: 基于线程安全和文件缓存的单例多线程同步日志记录接口,本接口由一个 *)
(* Delphi版本的动态链接库来提供相应的功能,采用Delphi的 String 类型 *)
(* 传递参数,使用时请注意调用方式与Delphi一致,不建议使用于 Delphi *)
(* 以外的语言环境,由此所引发的后果,作者不承担任何责任 *)
(* 附带文件: HSLogger4D.DLL *)
(* 版 本 号: 1.1 *)
(* 创 建 于: 2007-07 *)
(* 备 注: 本接口属进程独立版不处理多进程间同步 *)
(* *)
(* 修改记录: 2007-07-13 创建最初版本 *)
(* 2007-07-14 修正多线程内存管理冲突 *)
(******************************************************************************)
unit HSLogger4D;
interface
uses
Windows;
(*********************************)
(* 功 能:记录日志 *)
(* 参数1:日志文件名,支持相对路径 *)
(* 参数2:日志内容,自行控制换行符 *)
(* 参数3:记录日志后是否关闭文件 *)
(* (不会释放其它资源) *)
(* 返回值:0=成功,非0=LastError *)
(*********************************)
function WriteLogThreadsafe(
FileName : String;
LogString : String;
CloseFileAfterWrote : BOOL
) : DWORD;overload;
function WriteLogThreadsafe(
FileName : String;
LogString : String
) : DWORD;overload;
(*********************************)
(* 功 能:关闭日志文件 *)
(* 参数1:日志文件名,支持相对路径 *)
(* 参数2:记录日志文件关闭后是否 *)
(* 释放其它相关资源 *)
(*********************************)
procedure CloseFile(
FileName : String;
FreeAfterClose : BOOL = true
);
(*********************************)
(* 功 能:关闭所有日志文件 *)
(* 参数1:记录日志文件关闭后是否 *)
(* 释放其它相关资源 *)
(*********************************)
procedure CloseAllFile(
FreeAfterClose : BOOL = false
);
(*********************************)
(* 功 能:强制缓存写入文件 *)
(* 参数1:日志文件名,支持相对路径 *)
(* 参数2:写入文件后是否关闭文件 *)
(* (不会释放其它资源) *)
(* 返回值:0=失败,非0=成功 *)
(*********************************)
function FlushFileToDisk(
FileName : String;
CloseFileAfterFlush : BOOL = true
) : BOOL;
(*********************************)
(* 功 能:强制缓存写入文件 *)
(* 参数1:写入文件后是否关闭文件 *)
(* (不会释放其它资源) *)
(*********************************)
procedure FlushAllFileToDisk(
CloseFileAfterFlush : BOOL = false
);
var
CloseFileAfterWrote:BOOL=false;
implementation
(******************************************************************************)
(* *)
(* <<日志接口定义>> *)
(* 注:请保持与源接口一致 *)
(******************************************************************************)
type
(*Logger Interface*)
ILogger=interface
['{E43E419D-26AD-48e6-8097-19622CC2043E}']
function WriteLog(
FileName : String;
LogString : String;
CloseFileAfterWrote : BOOL = true
) : DWORD;
procedure CloseFile(
FileName : String;
FreeAfterClose : BOOL = true
);
procedure CloseAllFile(
FreeAfterClose : BOOL = true
);
function FlushFileToDisk(
FileName : String;
CloseFileAfterFlush : BOOL = true
) : BOOL;
procedure FlushAllFileToDisk(
CloseFileAfterFlush : BOOL = true
);
end;
(*Logger Import statement*)
function HSLoggerObject: ILogger; stdcall;
external 'HSLogger4D.dll'
name 'HSLoggerObject';
(*Write Log-String to file*)
(*********************************)
(* 功 能:记录日志 *)
(* 参数1:日志文件名,支持相对路径 *)
(* 参数2:日志内容,自行控制换行符 *)
(* 参数3:记录日志后是否关闭文件 *)
(* (不会释放其它资源) *)
(*********************************)
function WriteLogThreadsafe(
FileName : String;
LogString : String;
CloseFileAfterWrote : BOOL
) : DWORD;
begin
Result:=HSLoggerObject.WriteLog(
FileName,
LogString,
CloseFileAfterWrote
);
end;
function WriteLogThreadsafe(
FileName : String;
LogString : String
) : DWORD;
begin
Result:=WriteLogThreadsafe(
FileName,
LogString,
CloseFileAfterWrote
);
end;
(*Close one Logfile,and free logfile-Object if FreeAfterClose was set to TRUE*)
(*********************************)
(* 功 能:关闭日志文件 *)
(* 参数1:日志文件名,支持相对路径 *)
(* 参数2:记录日志文件关闭后是否 *)
(*********************************)
procedure CloseFile(
FileName : String;
FreeAfterClose : BOOL);
begin
HSLoggerObject.CloseFile(
FileName,
FreeAfterClose
);
end;
(*Close All Logfile,and free logfile-Object if FreeAfterClose was set to TRUE*)
(*********************************)
(* 功 能:关闭所有日志文件 *)
(* 参数1:记录日志文件关闭后是否 *)
(*********************************)
procedure CloseAllFile( FreeAfterClose : BOOL = false );
begin
HSLoggerObject.CloseAllFile(FreeAfterClose);
end;
(*********************************)
(* 功 能:强制缓存写入文件 *)
(* 参数1:日志文件名,支持相对路径 *)
(* 参数2:写入文件后是否关闭文件 *)
(* 返回值:0=失败,非0=成功 *)
(*********************************)
function FlushFileToDisk( FileName : String;
CloseFileAfterFlush : BOOL
) : BOOL;
begin
Result:=HSLoggerObject.FlushFileToDisk(
FileName,
CloseFileAfterFlush
);
end;
(*********************************)
(* 功 能:强制缓存写入文件 *)
(* 参数1:写入文件后是否关闭文件 *)
(*********************************)
procedure FlushAllFileToDisk( CloseFileAfterFlush : BOOL );
begin
HSLoggerObject.FlushAllFileToDisk(CloseFileAfterFlush);
end;
end.
【文件预览】:
HSLogger4D.pas
HSLogger4D.dll