24
24
25
25
namespace Serilog . AspNetCore
26
26
{
27
+ // ReSharper disable once ClassNeverInstantiated.Global
27
28
class RequestLoggingMiddleware
28
29
{
29
30
readonly RequestDelegate _next ;
30
31
readonly DiagnosticContext _diagnosticContext ;
31
32
readonly MessageTemplate _messageTemplate ;
32
33
readonly Action < IDiagnosticContext , HttpContext > _enrichDiagnosticContext ;
33
34
readonly Func < HttpContext , double , Exception , LogEventLevel > _getLevel ;
35
+ readonly ILogger _logger ;
34
36
static readonly LogEventProperty [ ] NoProperties = new LogEventProperty [ 0 ] ;
35
37
36
38
public RequestLoggingMiddleware ( RequestDelegate next , DiagnosticContext diagnosticContext , RequestLoggingOptions options )
@@ -42,6 +44,7 @@ public RequestLoggingMiddleware(RequestDelegate next, DiagnosticContext diagnost
42
44
_getLevel = options . GetLevel ;
43
45
_enrichDiagnosticContext = options . EnrichDiagnosticContext ;
44
46
_messageTemplate = new MessageTemplateParser ( ) . Parse ( options . MessageTemplate ) ;
47
+ _logger = options . Logger ? . ForContext < RequestLoggingMiddleware > ( ) ;
45
48
}
46
49
47
50
// ReSharper disable once UnusedMember.Global
@@ -73,7 +76,7 @@ public async Task Invoke(HttpContext httpContext)
73
76
74
77
bool LogCompletion ( HttpContext httpContext , DiagnosticContextCollector collector , int statusCode , double elapsedMs , Exception ex )
75
78
{
76
- var logger = Log . ForContext < RequestLoggingMiddleware > ( ) ;
79
+ var logger = _logger ?? Log . ForContext < RequestLoggingMiddleware > ( ) ;
77
80
var level = _getLevel ( httpContext , elapsedMs , ex ) ;
78
81
79
82
if ( ! logger . IsEnabled ( level ) ) return false ;
0 commit comments