1. 首页
  2. 编程语言
  3. Delphi
  4. 线程安全日志记录器

线程安全日志记录器

上传者: 2018-12-27 14:39:23上传 RAR文件 46.37KB 热度 35次
(******************************************************************************)(* 模 块 名: HSLogger4D.Pas *)(* 别 名: 多任务线程安全日志接口-进程独立版 *)(* 作 者: Unsigned(僵哥) *)(* 说 明: 基于线程安全和文件缓存的单例多线程同步日志记录接口,本接口由一个 *)(* Delphi版本的动态链接库来提供相应的功能,采用Delphi的 String 类型 *)(* 传递参数,使用时请注意调用方式与Delphi一致,不建议使用于 Delphi *)(* 以外的语言环境,由此所引发的后果,作者不承担任何责任 *)(* 附带文件: HSLogger4D.DLL *)(* 版 本 号: 1.1 *)(* 创 建 于: 2007-07 *)(* 备 注: 本接口属进程独立版不处理多进程间同步 *)(* *)(* 修改记录: 2007-07-13 创建最初版本 *)(* 2007-07-14 修正多线程内存管理冲突 *)(******************************************************************************)unit HSLogger4D;interfaceuses 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.DLL *)(* 版 本 号: 1.1 *)(* 创 建 于: 2007-07 *)(* 备 注: 本接口属进程独立版不处理多进程间同步 *)(* *)(* 修改记录: 2007-07-13 创建最初版本 *)(* 2007-07-14 修正多线程内存管理冲突 *)(******************************************************************************)unit HSLogger4D;interfaceuses 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.
用户评论