@@ -74,13 +74,15 @@ TCustomErrorPages = class
74
74
function GetOnRequest : TRequestEvent;
75
75
function GetCustomErrorPages : TCustomErrorPages;
76
76
procedure SetCustomErrorPages (const Value : TCustomErrorPages);
77
+ function GetLogger : ILogger;
78
+ procedure SetLogger (const aLogger : ILogger);
77
79
function GetHost : string;
78
80
function GetPort : Integer;
79
81
property OnNewRequest : TRequestEvent read GetOnRequest write SetOnRequest;
80
82
property CustomErrorPages : TCustomErrorPages read GetCustomErrorPages write SetCustomErrorPages;
81
83
property Host : string read GetHost;
82
84
property Port : Integer read GetPort;
83
- function Logger : ILogger;
85
+ property Logger : ILogger read GetLogger write SetLogger ;
84
86
procedure Start ;
85
87
procedure Stop ;
86
88
end ;
@@ -95,6 +97,8 @@ TCustomHttpServer = class(TInterfacedObject,IHttpServer)
95
97
function GetOnRequest : TRequestEvent;
96
98
function GetCustomErrorPages : TCustomErrorPages;
97
99
procedure SetCustomErrorPages (const Value : TCustomErrorPages);
100
+ function GetLogger : ILogger;
101
+ procedure SetLogger (const aLogger : ILogger);
98
102
function GetHost : string;
99
103
function GetPort : Integer;
100
104
protected
@@ -112,7 +116,7 @@ TCustomHttpServer = class(TInterfacedObject,IHttpServer)
112
116
property OnNewRequest : TRequestEvent read GetOnRequest write SetOnRequest;
113
117
property OnConnect : TOnConnectEvent read fOnConnect write fOnConnect;
114
118
property OnDisconnect : TOnDisconnectEvent read fOnDisconnect write fOnDisconnect;
115
- function Logger : ILogger;
119
+ property Logger : ILogger read GetLogger write SetLogger ;
116
120
procedure Start ; virtual ; abstract ;
117
121
procedure Stop ; virtual ; abstract ;
118
122
end ;
@@ -237,6 +241,11 @@ function TCustomHttpServer.GetHost: string;
237
241
Result := fHost;
238
242
end ;
239
243
244
+ function TCustomHttpServer.GetLogger : ILogger;
245
+ begin
246
+ Result := fLogger;
247
+ end ;
248
+
240
249
function TCustomHttpServer.GetOnRequest : TRequestEvent;
241
250
begin
242
251
Result := fOnRequest;
@@ -252,14 +261,14 @@ procedure TCustomHttpServer.SetCustomErrorPages(const Value: TCustomErrorPages);
252
261
fCustomErrorPages := Value ;
253
262
end ;
254
263
255
- procedure TCustomHttpServer.SetOnRequest (aRequestEvent: TRequestEvent );
264
+ procedure TCustomHttpServer.SetLogger ( const aLogger: ILogger );
256
265
begin
257
- fOnRequest := aRequestEvent ;
266
+ fLogger := aLogger ;
258
267
end ;
259
268
260
- function TCustomHttpServer.Logger : ILogger ;
269
+ procedure TCustomHttpServer.SetOnRequest (aRequestEvent: TRequestEvent) ;
261
270
begin
262
- Result := fLogger ;
271
+ fOnRequest := aRequestEvent ;
263
272
end ;
264
273
265
274
{ THTTPServer }
@@ -335,6 +344,9 @@ function THttpServer.GetRequestInfo(aRequestInfo: TIdHTTPRequestInfo): THttpRequ
335
344
Result.ContentType := aRequestInfo.ContentType;
336
345
Result.ContentEncoding := aRequestInfo.ContentEncoding;
337
346
Result.ContentLength := aRequestInfo.ContentLength;
347
+ { $IFDEF DEBUG_HTTPSERVER}
348
+ TDebugger.Trace(Self,' Request: Headers (%s)' ,[aRequestInfo.RawHeaders.Text]);
349
+ { $ENDIF}
338
350
for i := 0 to aRequestInfo.RawHeaders.Count -1 do
339
351
begin
340
352
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
407
419
on E : Exception do
408
420
begin
409
421
// 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
411
427
else
412
428
begin
413
429
if response.StatusCode = 200 then
@@ -416,6 +432,9 @@ procedure THTTPServer.OnGetRequest(aContext: TIdContext; aRequestInfo: TIdHTTPRe
416
432
response.StatusText := ' Internal server error' ;
417
433
end ;
418
434
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]);
419
438
end ;
420
439
end ;
421
440
end ;
0 commit comments