From ea0ed85bbfddb1f4401dea0ae15d03ebea131ff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=97=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=BE=D1=86=D0=BA=D0=B8=D0=B9?= Date: Thu, 16 Nov 2023 00:18:20 +0300 Subject: [PATCH] client-log --- lms_cgi.lpr | 103 +++++++++++++++++++++++++++++++++++++++++++----------------- lms_cgi.obj | Bin 62696 -> 62696 bytes 2 files changed, 74 insertions(+), 29 deletions(-) diff --git a/lms_cgi.lpr b/lms_cgi.lpr index c119517..21a2dac 100644 --- a/lms_cgi.lpr +++ b/lms_cgi.lpr @@ -4,7 +4,7 @@ program lms_cgi; uses Interfaces, Classes, SysUtils, inifiles, httpDefs, fpweb, custweb, custcgi, - lnetbase, tcpClient, tcpthreadhelper, extTypes; + lnetbase, tcpClient, tcpthreadhelper, extTypes, eventlog; Type @@ -33,13 +33,17 @@ Type flogFolder: string; fHost: string; fPort: integer; + flogger: TEventLog; procedure LoadConfig; Protected function InitializeWebHandler: TWebHandler; override; public + constructor CreateWithLogger(AOwner: TComponent); + destructor Destroy; override; property Host: string read fHost; property Port: integer read fPort; property LogFolder: string read fLogFolder; + property Logger: TEventLog read flogger; end; const @@ -106,7 +110,34 @@ log(mtDebug,self,'Command '+ARequest.Command); LogStrings(mtInfo, @log,self,'CookieFields',Arequest.CookieFields); LogStrings(mtInfo, @log,self,'CustomHeaders',Arequest.CustomHeaders); {$ENDIF} + if ARequest.QueryFields.Values['action']='cgi-test' then + begin + AResponse.ContentType := 'text/html'; + AResponse.Contents.add('

QueryFields

'); + AResponse.Contents.add('
'); + for i := 0 to ARequest.QueryFields.Count-1 do + begin + k := ARequest.QueryFields.Names[i]; + v := ARequest.QueryFields.Values[k]; + AResponse.Contents.add(format('
%s
%s
',[k,v])); + end; + AResponse.Contents.add('
'); + AResponse.Contents.add(''); + AResponse.Contents.add('

ContentFields

'); + AResponse.Contents.add('
'); + for i := 0 to ARequest.ContentFields.Count-1 do + begin + k := ARequest.ContentFields.Names[i]; + v := ARequest.ContentFields.Values[k]; + AResponse.Contents.add(format('
%s
%s
',[k,v])); + + end; + AResponse.Contents.add('
'); + AResponse.Contents.add(''); + AResponse.SendContent; + exit; + end; allfields := TStringList.Create; try allfields.AddStrings(ARequest.QueryFields); @@ -129,27 +160,27 @@ log(mtDebug,self,'Data READY'); {$ENDIF} if not assigned(fData) then begin - AResponse.ContentType := 'application/json'; - AResponse.Contents.add('{'); - AResponse.Contents.add('"type":'+aTypes[fMode]+','); - AResponse.Contents.add('"code":'+inttostr(fCode)+','); - AResponse.Contents.add('"value":'+inttostr(fParam)+','); - AResponse.Contents.add('"name":"'+(fAnswer)+'",'); - if assigned(fValues) then - begin - AResponse.Contents.add('"values":['); - for i := 0 to fValues.Count-1 do + AResponse.ContentType := 'application/json'; + AResponse.Contents.add('{'); + AResponse.Contents.add('"type":'+aTypes[fMode]+','); + AResponse.Contents.add('"code":'+inttostr(fCode)+','); + AResponse.Contents.add('"value":'+inttostr(fParam)+','); + AResponse.Contents.add('"name":"'+(fAnswer)+'",'); + if assigned(fValues) then begin - AResponse.Contents.Add(fValues[i]+','); + AResponse.Contents.add('"values":['); + for i := 0 to fValues.Count-1 do + begin + AResponse.Contents.Add(fValues[i]+','); + end; + AResponse.Contents.add(']'); + fValues.Free; end; - AResponse.Contents.add(']'); - fValues.Free; - end; - AResponse.Contents.add('}'); - end + AResponse.Contents.add('}'); + end else begin - AResponse.FreeContentStream := true; + AResponse.FreeContentStream := true; AResponse.ContentType:='application/pdf'; fData.Seek(0,soFromBeginning); AResponse.ContentStream := fData; @@ -164,18 +195,14 @@ var f: TextFile; s: string; begin - if (Owner as TMyCGIApp).LogFolder='' then exit; + if (Owner as TMyCGIApp).Logger=nil then exit; case ALevel of - mtError: s := '!!ERROR: '; - mtWarning: s := '!WARNING: '; - mtInfo: s := #09; - mtDebug: s := #09#09; - mtExtra: s := #09#09#09; + mtError: (Owner as TMyCGIApp).Logger.Error(msg); + mtWarning: (Owner as TMyCGIApp).Logger.Warning(msg); + mtInfo: (Owner as TMyCGIApp).Logger.Info(msg); + mtDebug: (Owner as TMyCGIApp).Logger.Debug(msg); + mtExtra: (Owner as TMyCGIApp).Logger.Log(msg); end; - assignfile(f, (Owner as TMyCGIApp).LogFolder); - if fileexists((Owner as TMyCGIApp).LogFolder) then append(f) else rewrite(f); - writeln(f,s+msg); - closefile(f); end; procedure TMyCGIApp.LoadConfig; @@ -195,13 +222,31 @@ end; function TMyCGIApp.InitializeWebHandler: TWebHandler; begin LoadConfig; + flogger.FileName:=LogFolder; + flogger.Active:=true; + flogger.Info('start'); Result:=TMyCgiHandler.Create(self); end; +constructor TMyCGIApp.CreateWithLogger(AOwner: TComponent); +begin + flogger := TEventLog.Create(self); + flogger.Identification:='lms_cgi_client'; + flogger.LogType:={$IFDEF LINUX}ltSystem{$ELSE}ltFile{$ENDIF}; + inherited Create(AOwner); + +end; + +destructor TMyCGIApp.Destroy; +begin + flogger.free; + inherited Destroy; +end; + begin - with TMyCGIApp.create(nil) do + with TMyCGIApp.CreateWithLogger(nil) do try Initialize; Run; diff --git a/lms_cgi.obj b/lms_cgi.obj index 76b1caf3765ab8b91aa9dbf53785d3bd2deff9ae..939c58e44a893b027fff8466f84ade3f2c538683 100644 GIT binary patch delta 15 XcmaFylKI6;<_(X(u-33JFfafBMjHmT delta 15 XcmaFylKI6;<_(X(u%@ywFfafBMW_az