add more details for request logging serilog

This commit is contained in:
meysamhadeli 2022-12-21 17:00:58 +03:30
parent 13f5a8265d
commit 35bcc23d8f
6 changed files with 56 additions and 4 deletions

View File

@ -0,0 +1,39 @@
using System.Security.Claims;
using Microsoft.AspNetCore.Http;
using Serilog;
namespace BuildingBlocks.Logging;
public static class LogEnrichHelper
{
//ref: https://andrewlock.net/using-serilog-aspnetcore-in-asp-net-core-3-logging-the-selected-endpoint-name-with-serilog/
public static void EnrichFromRequest(IDiagnosticContext diagnosticContext, HttpContext httpContext)
{
var request = httpContext.Request;
// Set all the common properties available for every request
diagnosticContext.Set("Host", request.Host);
diagnosticContext.Set("Protocol", request.Protocol);
diagnosticContext.Set("Scheme", request.Scheme);
// Only set it if available. You're not sending sensitive data in a querystring right?!
if(request.QueryString.HasValue)
{
diagnosticContext.Set("QueryString", request.QueryString.Value);
}
// Set the content-type of the Response at this point
diagnosticContext.Set("ContentType", httpContext.Response.ContentType);
// Retrieve the IEndpointFeature selected for the request
var endpoint = httpContext.GetEndpoint();
if (endpoint is object) // endpoint != null
{
diagnosticContext.Set("EndpointName", endpoint.DisplayName);
}
diagnosticContext.Set("ClientIP", httpContext.Connection.RemoteIpAddress);
diagnosticContext.Set("UserId", request.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier));
}
}

View File

@ -94,7 +94,10 @@ public static class InfrastructureExtensions
var appOptions = app.GetOptions<AppOptions>(nameof(AppOptions));
app.UseProblemDetails();
app.UseSerilogRequestLogging();
app.UseSerilogRequestLogging(options =>
{
options.EnrichDiagnosticContext = LogEnrichHelper.EnrichFromRequest;
});
app.UseCorrelationId();
app.UseRouting();
app.UseHttpMetrics();

View File

@ -101,7 +101,10 @@ public static class InfrastructureExtensions
var appOptions = app.GetOptions<AppOptions>(nameof(AppOptions));
app.UseProblemDetails();
app.UseSerilogRequestLogging();
app.UseSerilogRequestLogging(options =>
{
options.EnrichDiagnosticContext = LogEnrichHelper.EnrichFromRequest;
});
app.UseCorrelationId();
app.UseHttpMetrics();
app.UseMigration<FlightDbContext>(env);

View File

@ -0,0 +1 @@
{"Version":1,"Id":"B33EF2DCF9AAEDDA74F42B239C122EC3","Created":"2022-12-21T12:54:30.8778452Z","Algorithm":"RS256","IsX509Certificate":false,"Data":"CfDJ8BYS1jC_Z-ZPsg3E7DQNOTPJbX5na2yKwYTMzyoQuiVxDh2roPqW5hjhMHjO5KyMi0Hg_JgQ6TmQ8hgf-4kff-Z3PtIlT2ydkdtv0ZIljsrCbma4CFulhcRah8UczQetDDhe8CITbqTPnmX0Erz_MuBTt8f2zlj1Ne_OsuqyKYUCu_yo8SEy5vYT-_Q1626X77NtbvyWg8NheVKZadglyxml9X6AFe6zh3kRBX7odVWW0d45N9aQodGDq-Bv2h4DiLC_h5mtmwWcUTvwCQ5G4ix_12BSl_NzyDpkqZHi4wpYyLUCUfWALp-yni2tb-RT4GAmKqKx5pksPvjgSrhCkysXeJVKlyKnrto5jkV-R-E2EDrZHZCPFxZbOmdhRCkJczqVPzEyRikvv66deH_3RnENmpJR6qxG5s6EZ3o8kPBkQ5Lf_WL48_eD3Bkc3gSDarefr-eRohlCIfpAj--TTmZOBAeqDLFinsnEIVynxYQQidGdzKRe8jBhPI797mEjxfOGQ2v713Mp6UfbiPS6pJfDujQlAqvySSMAzSekdWaSmcYOFBKJ5K4V9PjyQwf96m4KPJlI0uB694_ULHJ34zGCYgxAU2bl1y5Sv0_MABxe3nDGGsgCXy1nvmGvdCQqJUmeJR8-FnYl_7-jS2GlFU7NdgNfCoiM4t2ZERZ2N2sMguOYxkSjj2ELblXNPD55fP3mw_20CSrcS-ms7FdsDbC-BNw_lx-BGy7oYrUVJZ4ifoTVM-xxBU3eWuzSCuGyuED60Ms05w5CL3CyQRrrP6XK-55X7F5IH19CrVUjV99a3X0ybib5X3Fw5m4vSRmz0jWS-tKK2dVZHtpSL6ixrbT88sVytaDyH3VWbVjUIkjnCtUnDGIp_BPRAnN6lYINX77yPb6JmBDd_TNhH2veM8IpCrHeuNNGz126_CcxHTw0kOc_Q-QxyqMOGgq6DmNBnLRav4UIsa8WaSsePi-k50lCYn5dBUSlBUnA4Vm3jIYX0-DUH2jy2rwNPw7xG_FqrnUP7DQLXO4ksQCVAHH80CQFYwrSJl6bSHNwrSis4YYnkhnp0CDJoz8CMlaNL67xGfxdqb2ztuKh64hxtB-pKja486lPMJWtgCW8ZtUxYK8lWqb7RA0bWCw2tYfLUgdCaK4ydCDXAmwLUoZA_BEEAaelx8r94qSc0nc3Dw__iVM2jc-yxgU_1ltMqjyYl7Rg_sDlAMg0Rg0jkY-yf8iY4HWWEUCT7UZi08Az-XokyVUHaXcsq4zV5K3qLzoLW1ZapRAVBSw3PG7W5m_ZonmXvu9tKdC-shgTFSWz0B9dRM_n6hIb19rgpEvjS55Wfu5CywS9YGqobIOU8LuZaQqBtJdq5-S4ZZSBi37qkoys-y6-N5Ga_dFMUzMeML3t1PkTmFH-AFYwW0YzahMtWOFVeTr3HwOzOm5hPQTSrLSp4sA7pPhoYoLuApoN0UvjqLUY7qjR8HsbOTker0AJcdf8fYA58SuFyX3MqdMyFsDBgsygyEsjvcU8x0kKF-6MAcLbWs9NAKV9TH98nHAZem-31xkRVicRAbEykweFMIaR8I8c-_stEKneWmPx0_oZnGSM4oaP9WG0mX7PEdl-krOuoBWplDOxoEFOng09QjWo8PMMaj5qMjkuCmOIGTx4zYcpvgo2hCqRZ1JmAmmD4jjETQvS33eOjMvETC4tdwvXyM-uZ-qNPlPKOqHFXDfTpv4UhnIWl4ieV9m1KzziejkinfVysFWsQD7uIvUcNvPBvfkTGpmvSfHIFzDllYk2RptbigJyiA8mbX30fSOBcoCMaK9SWJMRCV0ffg-zgURhd9ctOYjmUStEIPiGSEl-7EKBlrOIfDgCyxH3o8xphDRd6aqBHCElf07z7RUIU_oGduH8pIo8GwjLeXKrHCF6g9CosEaCO09K9E32pL5e9ojA_1o3WJC25OkqWaWEJ9iz7JSSpYxnkSDCvo6_8vXIXWjPqPWZwC5MkAWYKfgynv-iPwfZmGl1NCDZDw4OMtsrh1kpATdRlgaefafnLLysPfpMMRirIje2f6cqweTU7AXyh8WBfaoNHVybZmRmjK4jJuSFw1yCSDcHIxBcXlThZg41dkntNicmEbSYVrajXpnurxTNMiuQfNhDUsetXKReWLCwdIkXa7seQ5f8Om5-RR0DpLlPGrUiDLr9q24dZ8zOVU3Fnv_qSn-sOHn0ALV17LSaNfYjU-T-svlN5ksM2gnnNqqc8qadsiyP7WqoZZ9YdKwcQIFPWx0vB-G0Ej-4aQRtR7gxyNKP4zhDnEh9QkYfQRRcGA9_Pzwq7iDkPm66GFQJPpYioGQfZJrnsrjV5BiDON1ZHIpeUfXHs9qcC-U0g-jG2dTg51Znc_AS6rX-RxW3_dQXeeUFwndStmJUuZPHk4micnpjHZLO2Xcj14PMG81OgqtIxhpXLZq8MbhKjHLeKr2DvjwLEVph2yR1UD7D","DataProtected":true}

View File

@ -85,7 +85,10 @@ public static class InfrastructureExtensions
var appOptions = app.GetOptions<AppOptions>(nameof(AppOptions));
app.UseProblemDetails();
app.UseSerilogRequestLogging();
app.UseSerilogRequestLogging(options =>
{
options.EnrichDiagnosticContext = LogEnrichHelper.EnrichFromRequest;
});
app.UseMigration<IdentityContext>(env);
app.UseCorrelationId();
app.UseHttpMetrics();

View File

@ -92,7 +92,10 @@ public static class InfrastructureExtensions
var appOptions = app.GetOptions<AppOptions>(nameof(AppOptions));
app.UseProblemDetails();
app.UseSerilogRequestLogging();
app.UseSerilogRequestLogging(options =>
{
options.EnrichDiagnosticContext = LogEnrichHelper.EnrichFromRequest;
});
app.UseMigration<PassengerDbContext>(env);
app.UseCorrelationId();
app.UseHttpMetrics();