2424
2525namespace Serilog . AspNetCore
2626{
27+ // ReSharper disable once ClassNeverInstantiated.Global
2728 class RequestLoggingMiddleware
2829 {
2930 readonly RequestDelegate _next ;
3031 readonly DiagnosticContext _diagnosticContext ;
3132 readonly MessageTemplate _messageTemplate ;
3233 readonly Action < IDiagnosticContext , HttpContext > _enrichDiagnosticContext ;
3334 readonly Func < HttpContext , double , Exception , LogEventLevel > _getLevel ;
35+ readonly ILogger _logger ;
3436 static readonly LogEventProperty [ ] NoProperties = new LogEventProperty [ 0 ] ;
3537
3638 public RequestLoggingMiddleware ( RequestDelegate next , DiagnosticContext diagnosticContext , RequestLoggingOptions options )
@@ -42,6 +44,7 @@ public RequestLoggingMiddleware(RequestDelegate next, DiagnosticContext diagnost
4244 _getLevel = options . GetLevel ;
4345 _enrichDiagnosticContext = options . EnrichDiagnosticContext ;
4446 _messageTemplate = new MessageTemplateParser ( ) . Parse ( options . MessageTemplate ) ;
47+ _logger = options . Logger ? . ForContext < RequestLoggingMiddleware > ( ) ;
4548 }
4649
4750 // ReSharper disable once UnusedMember.Global
@@ -73,7 +76,7 @@ public async Task Invoke(HttpContext httpContext)
7376
7477 bool LogCompletion ( HttpContext httpContext , DiagnosticContextCollector collector , int statusCode , double elapsedMs , Exception ex )
7578 {
76- var logger = Log . ForContext < RequestLoggingMiddleware > ( ) ;
79+ var logger = _logger ?? Log . ForContext < RequestLoggingMiddleware > ( ) ;
7780 var level = _getLevel ( httpContext , elapsedMs , ex ) ;
7881
7982 if ( ! logger . IsEnabled ( level ) ) return false ;
0 commit comments