zoukankan      html  css  js  c++  java
  • C#----使用BaseController添加访问日志

    使用BaseController添加访问日志,其中包括请求头

    不说那么多直接上代码(给自己也记一下,下次就可以直接用了)

     public class BaseController : Controller
        {
         
            public override void OnActionExecuting(ActionExecutingContext context)
            {
    //获取请求头 if (!context.ActionArguments.Any(m => typeof(RequestViewModel).IsInstanceOfType(m.Value)) || !context.HttpContext.Request.Headers.Keys.Contains("HeadConten") || !context.HttpContext.Request.Headers.Keys.Contains("Client") ) { return; } var vItem = new AuditLogs { Action = context.ActionDescriptor.DisplayName, Path = context.HttpContext.Request.Path, Requset = JsonHelper.SerializeObject(context.ActionArguments), Time = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc), Stopwatch = Stopwatch.StartNew(), HeadConten = context.HttpContext.Request.Headers["HeadConten"], ClientInfo = context.HttpContext.Request.Headers["Client"], Ip = context.HttpContext.Request.Headers["X-Original-For"].FirstOrDefault(),//获取ip }; context.HttpContext.Items["auditlog"] = vItem; } public override void OnActionExecuted(ActionExecutedContext context) { var vLog = Request.HttpContext.RequestServices.GetService(typeof(ILoggerService)) as ILoggerService; if (vLog == null) return; if (!(context.HttpContext.Items["auditlog"] is AuditLogs item)) return; var vDuration = item.Stopwatch.ElapsedMilliseconds; var vResult = context.Result as ObjectResult; item.Duration = vDuration; item.Response = JsonHelper.SerializeObject(vResult?.Value); item.Exception = context.Exception; vLog.WriteApiLog(item);//写入mongo } }

      

  • 相关阅读:
    Django REST framework+Vue 打造生鲜超市(十二)
    pymsql
    (四)Jmeter系列之---http接口请求脚本优化
    (三)Jmeter系列之---实现一个简单的http接口请求
    2021每天一个知识点(二月)
    (二)Jmeter系列之---Jmeter工具介绍
    (一)Jmeter系列之---性能测试+工具介绍
    Linux磁盘的分区操作
    Python格式化处理json数据的方式
    (17)-Python3之--文件操作
  • 原文地址:https://www.cnblogs.com/wuyabaibsd/p/10985641.html
Copyright © 2011-2022 走看看