namespace LFlow.Middleware.Middlewares { public class LoggingMiddleware : ILFlowMiddleware { private readonly ILogger _logger; public LoggingMiddleware(ILogger logger) { _logger = logger; } public int Priority => 1; public async Task RunAsync(HttpContext context, Func next) { var controllerName = context.GetRouteData()?.Values["controller"]?.ToString(); var actionName = context.GetRouteData()?.Values["action"]?.ToString(); var requestId = context.Request.Headers["X-Request-Id"].ToString(); if (string.IsNullOrEmpty(requestId)) { requestId = Guid.NewGuid().ToString(); context.Request.Headers.Append("X-Request-Id", requestId); } using (_logger?.BeginScope(requestId)) { _logger?.LogInformation("Request Id: {requestId}", requestId); _logger?.LogInformation("Controller: {controllerName} / Action : {actionName}", controllerName, actionName); // _logger?.LogInformation("Router Data {@routerData}", context.GetRouteData()); try { await next(); } catch (Exception ex) { _logger?.LogError(ex, "An error occurred while processing the request. Request Id: {requestId}", requestId); //await context.Response.WriteAsync(JsonConvert.SerializeObject(ApiResult.FailResult("无权限!", 100501))); // _logger?.LogInformation("Response {@response}", context.Response); } } if (!context.Response.Headers.ContainsKey("X-Request-Id")) { } // context.Response.Headers.Append("X-Request-Id", requestId); } } }