49 lines
1.9 KiB
C#
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);
|
|
|
|
}
|
|
}
|
|
}
|