Skip to content

Commit ef20a26

Browse files
committed
[httpServer] added more debug info
1 parent 8ea6bbe commit ef20a26

File tree

2 files changed

+34
-9
lines changed

2 files changed

+34
-9
lines changed

Quick.HttpServer.Request.pas

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{ ***************************************************************************
22
3-
Copyright (c) 2016-2019 Kike Pérez
3+
Copyright (c) 2016-2021 Kike Pérez
44
55
Unit : Quick.HttpServer.Request
66
Description : Http Server Request
77
Author : Kike Pérez
88
Version : 1.8
99
Created : 30/08/2019
10-
Modified : 31/08/2019
10+
Modified : 07/02/2021
1111
1212
This file is part of QuickLib: https://github.com/exilon/QuickLib
1313
@@ -34,6 +34,9 @@
3434
interface
3535

3636
uses
37+
{$IFDEF DEBUG_HTTPSERVER}
38+
Quick.Debug.Utils,
39+
{$ENDIF}
3740
Classes,
3841
SysUtils,
3942
Quick.Commons,
@@ -143,6 +146,9 @@ implementation
143146

144147
function THttpRequest.ContentAsString: string;
145148
begin
149+
{$IFDEF DEBUG_HTTPSERVER}
150+
TDebugger.Trace(Self,'ContentAsString Encode: %s',[ContentEncoding]);
151+
{$ENDIF}
146152
if fContent <> nil then Result := StreamToString(fContent,TEncoding.UTF8);
147153
end;
148154

Quick.HttpServer.pas

+26-7
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,15 @@ TCustomErrorPages = class
7474
function GetOnRequest : TRequestEvent;
7575
function GetCustomErrorPages: TCustomErrorPages;
7676
procedure SetCustomErrorPages(const Value: TCustomErrorPages);
77+
function GetLogger : ILogger;
78+
procedure SetLogger(const aLogger : ILogger);
7779
function GetHost: string;
7880
function GetPort: Integer;
7981
property OnNewRequest : TRequestEvent read GetOnRequest write SetOnRequest;
8082
property CustomErrorPages : TCustomErrorPages read GetCustomErrorPages write SetCustomErrorPages;
8183
property Host : string read GetHost;
8284
property Port : Integer read GetPort;
83-
function Logger : ILogger;
85+
property Logger : ILogger read GetLogger write SetLogger;
8486
procedure Start;
8587
procedure Stop;
8688
end;
@@ -95,6 +97,8 @@ TCustomHttpServer = class(TInterfacedObject,IHttpServer)
9597
function GetOnRequest : TRequestEvent;
9698
function GetCustomErrorPages: TCustomErrorPages;
9799
procedure SetCustomErrorPages(const Value: TCustomErrorPages);
100+
function GetLogger : ILogger;
101+
procedure SetLogger(const aLogger : ILogger);
98102
function GetHost: string;
99103
function GetPort: Integer;
100104
protected
@@ -112,7 +116,7 @@ TCustomHttpServer = class(TInterfacedObject,IHttpServer)
112116
property OnNewRequest : TRequestEvent read GetOnRequest write SetOnRequest;
113117
property OnConnect : TOnConnectEvent read fOnConnect write fOnConnect;
114118
property OnDisconnect : TOnDisconnectEvent read fOnDisconnect write fOnDisconnect;
115-
function Logger : ILogger;
119+
property Logger : ILogger read GetLogger write SetLogger;
116120
procedure Start; virtual; abstract;
117121
procedure Stop; virtual; abstract;
118122
end;
@@ -237,6 +241,11 @@ function TCustomHttpServer.GetHost: string;
237241
Result := fHost;
238242
end;
239243

244+
function TCustomHttpServer.GetLogger: ILogger;
245+
begin
246+
Result := fLogger;
247+
end;
248+
240249
function TCustomHttpServer.GetOnRequest: TRequestEvent;
241250
begin
242251
Result := fOnRequest;
@@ -252,14 +261,14 @@ procedure TCustomHttpServer.SetCustomErrorPages(const Value: TCustomErrorPages);
252261
fCustomErrorPages := Value;
253262
end;
254263

255-
procedure TCustomHttpServer.SetOnRequest(aRequestEvent: TRequestEvent);
264+
procedure TCustomHttpServer.SetLogger(const aLogger: ILogger);
256265
begin
257-
fOnRequest := aRequestEvent;
266+
fLogger := aLogger;
258267
end;
259268

260-
function TCustomHttpServer.Logger: ILogger;
269+
procedure TCustomHttpServer.SetOnRequest(aRequestEvent: TRequestEvent);
261270
begin
262-
Result := fLogger;
271+
fOnRequest := aRequestEvent;
263272
end;
264273

265274
{ THTTPServer }
@@ -335,6 +344,9 @@ function THttpServer.GetRequestInfo(aRequestInfo: TIdHTTPRequestInfo): THttpRequ
335344
Result.ContentType := aRequestInfo.ContentType;
336345
Result.ContentEncoding := aRequestInfo.ContentEncoding;
337346
Result.ContentLength := aRequestInfo.ContentLength;
347+
{$IFDEF DEBUG_HTTPSERVER}
348+
TDebugger.Trace(Self,'Request: Headers (%s)',[aRequestInfo.RawHeaders.Text]);
349+
{$ENDIF}
338350
for i := 0 to aRequestInfo.RawHeaders.Count -1 do
339351
begin
340352
if not StrInArray(aRequestInfo.RawHeaders.Names[i],['Host','Accept-Encoding','Accept','User-Agent','Connection','Cache-Control']) then
@@ -407,7 +419,11 @@ procedure THTTPServer.OnGetRequest(aContext: TIdContext; aRequestInfo: TIdHTTPRe
407419
on E : Exception do
408420
begin
409421
//get unexpected exception
410-
if E.InheritsFrom(EControlledException) then response.ContentText := response.ContentText + '<BR>' + e.Message
422+
if E.InheritsFrom(EControlledException) then
423+
begin
424+
Logger.Error('Request: %s %s [%d %s] %s',[request.GetMethodAsString,request.URL, response.StatusCode, response.StatusText,e.Message]);
425+
response.ContentText := response.ContentText + '<BR>' + e.Message;
426+
end
411427
else
412428
begin
413429
if response.StatusCode = 200 then
@@ -416,6 +432,9 @@ procedure THTTPServer.OnGetRequest(aContext: TIdContext; aRequestInfo: TIdHTTPRe
416432
response.StatusText := 'Internal server error';
417433
end;
418434
response.ContentText := e.Message;
435+
//log error
436+
if response.StatusCode = 404 then Logger.Warn('Request: %s %s [%d %s] %s',[request.GetMethodAsString,request.URL, response.StatusCode, response.StatusText,e.Message])
437+
else Logger.Error('Request: %s %s [%d %s] %s',[request.GetMethodAsString,request.URL, response.StatusCode, response.StatusText,e.Message]);
419438
end;
420439
end;
421440
end;

0 commit comments

Comments
 (0)