📄 logwriter.pas
字号:
unit LogWriter;
interface
uses
Messages, classes, SysUtils, Windows, Dialogs,adodb,db,IniFiles,Forms,LockPwd,CommDeclare;
const
FILENAME = 'Logger';
type
TLogLevel = (
LEVEL_OFF,
LEVEL_SEVERE,
LEVEL_WARNING,
LEVEL_INFO,
LEVEL_CONFIG,
LEVEL_FINE,
LEVEL_FINER,
LEVEL_FINEST
);
TLogWriter = Class
private
m_csLogFileSync : TRTLCriticalSection;
m_strLogFileName : string;
con:tadoconnection;
qry:tadoquery;
ini:Tinifile;
function GetLevelNames(level : TLogLevel) : string;
public
constructor Create;
destructor Destroy; override;
procedure Log(level :TLogLevel ;ModuleID:integer; qry1:tadoquery);
procedure RemoveLastMonthFile();
procedure SetLogFileName(strLogFileName : string);
end;
function GetLogger() : TLogWriter;
procedure FINEST_LOG (ModuleID : integer;qry1:tadoquery);
procedure FINER_LOG (ModuleID : integer;qry1:tadoquery);
procedure CONFIG_LOG (ModuleID : integer;qry1:tadoquery);
procedure INFO_LOG (ModuleID : integer;qry1:tadoquery);
procedure WARNING_LOG(ModuleID : integer;qry1:tadoquery);
procedure SEVERE_LOG (ModuleID : integer;qry1:tadoquery);
implementation
var
m_Logger : TLogWriter ;
{ TLogWriter }
constructor TLogWriter.Create;
begin
InitializeCriticalSection(m_csLogFileSync);
m_strLogFileName := FILENAME;
ini:=Tinifile.Create(ExtractFilePath(Application.ExeName)+'Setup.ini');
con:=tadoconnection.Create(nil);
con.LoginPrompt:=false;con.ConnectionString:=
'Provider=SQLOLEDB.1;Password='+ Dec(ini.ReadString('Setup','Password',''))+
';Persist Security Info=True;User ID='+ini.ReadString('Setup','UserName','')+
';Initial Catalog='+ini.ReadString('Setup','DataBaseName','')+
';Data Source='+ini.ReadString('Setup','ServerName','');
qry:=tadoquery.Create(nil);qry.Connection:=con;
end;
destructor TLogWriter.Destroy;
begin
DeleteCriticalSection(m_csLogFileSync);
con.Free;qry.Free;ini.Free;
inherited Destroy;
end;
function TLogWriter.GetLevelNames(level: TLogLevel): string;
begin
Result := '';
case level of
LEVEL_OFF : Result := '[OFF] ';
LEVEL_SEVERE : Result := '[SEVERE] ';
LEVEL_WARNING : Result := '[WARNING]';
LEVEL_INFO : Result := '[INFO] ';
LEVEL_CONFIG : Result := '[CONFIG] ';
LEVEL_FINE : Result := '[FINE] ';
LEVEL_FINER : Result := '[FINER] ';
LEVEL_FINEST : Result := '[FINEST] ';
end;
end;
procedure TLogWriter.Log(level: TLogLevel;ModuleID:integer;qry1:tadoquery);
var
strMessage : string;
strFileName : string;
hFile : THandle;
systime : _SYSTEMTIME;
dwNumBytesWritten : DWORD;
LogFile : TextFile;
info:string;
i:integer;
begin
if (level > LEVEL_FINEST) then exit;
EnterCriticalSection(m_csLogFileSync);
strFileName := m_strLogFileName + FormatDateTime('yyyymmdd',Now) + '.txt';
if ModuleID<=100 then
begin
info:=''; if ModuleID=0 then info:='KYE MES System Login' else info:='KYE MES System LoginOut';
try
qry.Close; qry.SQL.Clear;
qry.SQL.add('insert into LOG_INFO(ACCOUNT_ID,MODULEID,OPERATION)values('
+''''+_userName+''''+','+''''+inttostr(ModuleID)+''''+','+''''+info+''''+')');
qry.ExecSQL ;
except
end ;
end
else
begin
if qry1.State in[dsInsert,dsEdit] then
begin
info:='';if qry1.State=dsInsert then info:='Insert: ' else info:='Edit: ';
for i:=0 to qry1.FieldCount-1 do
begin
info:=info+qry1.Fields[i].FieldName+':'+qry1.Fields[i].AsString+';';
end;
qry.Close; qry.SQL.Clear;
qry.SQL.add('insert into LOG_INFO(ACCOUNT_ID,MODULEID,OPERATION)values('
+''''+_userName+''''+','+''''+inttostr( ModuleID)+''''+','+''''+info+''''+')');
qry.ExecSQL ;
end
else
begin
info:='';info:='Delete: ';
for i:=0 to qry1.FieldCount-1 do
begin
info:=info+qry1.Fields[i].FieldName+':'+qry1.Fields[i].AsString+';';
end;
qry.Close; qry.SQL.Clear;
qry.SQL.add('insert into LOG_INFO(ACCOUNT_ID,MODULEID,OPERATION)values('
+''''+_userName+''''+','+''''+inttostr( ModuleID)+''''+','+''''+info+''''+')');
qry.ExecSQL ;
end
end;
dwNumBytesWritten := 0;
RemoveLastMonthFile();
LeaveCriticalSection(m_csLogFileSync);
end;
procedure TLogWriter.RemoveLastMonthFile;
begin
end;
procedure TLogWriter.SetLogFileName(strLogFileName: string);
begin
EnterCriticalSection(m_csLogFileSync);
m_strLogFileName := strLogFileName;
LeaveCriticalSection(m_csLogFileSync);
end;
function GetLogger() : TLogWriter;
begin
result := TLogWriter.Create;
end;
procedure FINEST_LOG(ModuleID : integer;qry1:tadoquery);
begin
GetLogger.Log(LEVEL_FINEST,ModuleID, qry1);
end;
procedure FINER_LOG(ModuleID : integer;qry1:tadoquery);
begin
GetLogger.Log(LEVEL_FINER, ModuleID,qry1);
end;
procedure CONFIG_LOG(ModuleID : integer;qry1:tadoquery);
begin
GetLogger.Log(LEVEL_CONFIG,ModuleID, qry1);
end;
procedure INFO_LOG(ModuleID : integer;qry1:tadoquery);
begin
GetLogger.Log(LEVEL_INFO,ModuleID, qry1);
end;
procedure WARNING_LOG(ModuleID : integer;qry1:tadoquery);
begin
GetLogger.Log(LEVEL_WARNING,ModuleID, qry1);
end;
procedure SEVERE_LOG(ModuleID : integer;qry1:tadoquery);
begin
GetLogger.Log(LEVEL_SEVERE,ModuleID, qry1);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -