Skip to content

Commit 58e8431

Browse files
authored
Merge pull request #183 from serilog/provide-ilogger
Allow an ILogger to be specified in `SerilogRequestLoggingOptions`
2 parents 7da9569 + 28d4dd2 commit 58e8431

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/Serilog.AspNetCore/AspNetCore/RequestLoggingMiddleware.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424

2525
namespace 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;

src/Serilog.AspNetCore/AspNetCore/RequestLoggingOptions.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
using Serilog.Events;
1717
using System;
1818

19+
// ReSharper disable UnusedAutoPropertyAccessor.Global
20+
1921
namespace Serilog.AspNetCore
2022
{
2123
/// <summary>
@@ -50,6 +52,13 @@ public class RequestLoggingOptions
5052
/// </summary>
5153
public Action<IDiagnosticContext, HttpContext> EnrichDiagnosticContext { get; set; }
5254

55+
56+
/// <summary>
57+
/// The logger through which request completion events will be logged. The default is to use the
58+
/// static <see cref="Log"/> class.
59+
/// </summary>
60+
public ILogger Logger { get; set; }
61+
5362
internal RequestLoggingOptions() { }
5463
}
5564
}

0 commit comments

Comments
 (0)