记录网络请求日志

记录网络请求日志

环境 :ASP.NET 6.0 项目:WebApi Nuget包:Serilog.AspNetCore、 Newtonsoft.Json

前期准备

Serilog

安装Nuget Serilog NuGet Gallery | Serilog.AspNetCore 6.1.1-dev-00295

官网 Serilog — simple .NET logging with fully-structured events

创建过滤器

操作拦截过滤器

public class ActionFilterLog : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        if (!context.ModelState.IsValid)
        {
            Log.Error($"请求参数:{JsonConvert.SerializeObject(context.ActionArguments)}");
            Log.Error($"返回参数:{JsonConvert.SerializeObject(context.Result)}");
        }
        else
        {
            Log.Information($"请求参数:{JsonConvert.SerializeObject(context.ActionArguments)}");
        }
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        Log.Information($"返回参数:{JsonConvert.SerializeObject(context.Result)}");
    }
}

异常拦截过滤器

public class ExceptionFilterLog:IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        Log.Error($"返回参数:{JsonConvert.SerializeObject(context.Result)}");
    }
}

服务注入

using Serilog;
Log.Logger = new LoggerConfiguration()
    .WriteTo.Console() // 输出到控制台
    .WriteTo.File("Logs/log-.log", rollingInterval: RollingInterval.Day) //输出到文件
    .CreateLogger();
var builder = WebApplication.CreateBuilder(args).Inject();
builder.Services.AddControllers()
    .AddMvcFilter<LogActionFilter.ActionFilterLog>()
    .AddMvcFilter<LogActionFilter.ExceptionFilterLog>()
    .AddJsonOptions(option =>
    {
        option.JsonSerializerOptions.Converters.AddDateFormatString("yyyy-MM-dd HH:mm:ss");
        option.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
    });
...
builder.Host.UseSerilog();
...
var app = builder.Build();
...
app.UseSerilogRequestLogging();
...
app.Run();

启动

console

效果

log

good

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值