LFlow/LFlow.Middleware/Middlewares/LoggingMiddleware.cs

49 lines
1.9 KiB
C#

namespace LFlow.Middleware.Middlewares
{
public class LoggingMiddleware : ILFlowMiddleware
{
private readonly ILogger<LoggingMiddleware> _logger;
public LoggingMiddleware(ILogger<LoggingMiddleware> logger)
{
_logger = logger;
}
public int Priority => 1;
public async Task RunAsync(HttpContext context, Func<Task> 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<object>.FailResult("无权限!", 100501)));
// _logger?.LogInformation("Response {@response}", context.Response);
}
}
if (!context.Response.Headers.ContainsKey("X-Request-Id"))
{
}
// context.Response.Headers.Append("X-Request-Id", requestId);
}
}
}