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 } }

      

  • 相关阅读:
    [BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排
    [BZOJ1226][SDOI2009]学校食堂Dining
    [BZOJ2734][HNOI2012]集合选数
    [BZOJ4563][Haoi2016]放棋子
    [BZOJ4897][Thu Summer Camp2016]成绩单
    [BZOJ4896][Thu Summer Camp2016]补退选
    [POJ3155]Hard Life
    [BZOJ1486][HNOI2009]最小圈
    [BZOJ1690][Usaco2007 Dec]奶牛的旅行
    [BZOJ2144]跳跳棋
  • 原文地址:https://www.cnblogs.com/wuyabaibsd/p/10985641.html
Copyright © 2011-2022 走看看