首页 > 其他分享 >使用过滤器记录api接口访问时长并记录日志

使用过滤器记录api接口访问时长并记录日志

时间:2024-01-18 11:25:37浏览次数:21  
标签:Web ERP 记录 System api key var using 时长

using ERP.Helper;
using ERP.Models.User;
using System;
using System.Diagnostics;
using System.Web;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
using ActionFilterAttribute = System.Web.Http.Filters.ActionFilterAttribute;
using Logger = ERP.Helper.Log.Logger;

namespace ERP.Services
{
    public class PerformanceActionAttribute : ActionFilterAttribute
    {

        public override void OnActionExecuting(HttpActionContext filterContext)
        {
            //在Action执行前执行
            GetTimer("action").Start();
        }

        public override void OnActionExecuted(HttpActionExecutedContext Context)
        {
            //在Action执行之后执行
            var actionTimer = GetTimer("action");
            actionTimer.Stop();
            var userName = "";
            //var ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(p => p.AddressFamily.ToString() == "InterNetwork")?.ToString();
            var ip = IpHelper.GetUserIp();
            var url = Context.Request.RequestUri.ToString();
            var extime = actionTimer.ElapsedMilliseconds + "ms";
            Logger.RecordEmailLog(userName,ip,url, extime );

            //在这里显示给用户的时间只是action的执行时间,如果在view中有执行调用代码的部分,则时间不会
            //记录在内,所以这里的时间不是很准,但是这个时间可以很自由的被view中的代码调用显示,使得界面可以按照
            //自己的意愿进行显示
        }

        private Stopwatch GetTimer(string name)
        {
            string key = "__timer__" + name;
            
            if (HttpContext.Current.Items.Contains(key))
            {
                return (Stopwatch)HttpContext.Current.Items[key];
            }

            var result = new Stopwatch();
            HttpContext.Current.Items[key] = result;
            return result;
        }
    }
}

 

标签:Web,ERP,记录,System,api,key,var,using,时长
From: https://www.cnblogs.com/ff2223/p/17972110

相关文章

  • 天气api接口+地区区号以及县市省数据汇总
    地区区号以及县市省数据天气接口:http://t.weather.sojson.com/api/weather/city/+区号eq:http://t.weather.sojson.com/api/weather/city/1013401011.链接下载:https://files.cnblogs.com/files/blogs/708875/sys_area.zip?t=1705546362&download=true2.单独提取代码--需......
  • #星计划# OpenHarmony NAPI技术简介
    作者:廖家兴简介NAPI(NativeAPI)是OpenHarmony系统中的一套原生模块扩展开发框架,它基于Node.jsN-API规范开发,为开发者提供了JavaScript与C/C++模块之间相互调用的交互能力。可以在NodeJs官网查看各种NAPI接口定义说明。NAPI作用OpenHarmony系统可以将框架层丰富的模块功能通过j......
  • 记录 | vscode json美化插件JSON Tools
    安装插件JSONTools原来的json的样子:JSONTools美化/格式化快捷键Ctrl+Alt+M(windows)/Command+Option+M(Mac),然后效果如下:......
  • 记录 | conda报错:conda json.decoder.JSONDecodeError: Expecting value: line 1 colu
    condacreate的时候报错:condajson.decoder.JSONDecodeError:Expectingvalue:line1column1(char0)解决办法:condaclean-i......
  • 计算两时间之前的差值时长,并转换成时分秒的字符串格式
    ///<summary>///返回时间差的总时长,以*天*时*分*秒的格式///</summary>///<paramname="startTime"></param>///<paramname="overTime"></param>///<returns><......
  • Fooocus 的安装和API的使用
    https://github.com/lllyasviel/Fooocus是一款基于Gradio的图像生成软件。它集成了StableDiffusion和Midjourney的特点:向StableDiffusion学习,该软件是离线的,开源的,免费的。从Midjourney中学到,不需要手动调整,用户只需要专注于提示和图像。同时它支持api接口调用,而且给了......
  • 数据探索之道:查询Web API数据中的JSON字符串列
    前言在当今数据驱动的时代,对数据进行探索和分析变得愈发关键。WebAPI作为广泛应用的数据源,提供了丰富的信息和资源。然而,面对包含JSON字符串列的WebAPI数据时,我们常常遇到一个挑战:如何高效灵活地处理和查询这些数据?这个问题在数据探索和提取过程中频繁出现。因此小编今天以葡萄......
  • .net 温故知新【17】:Asp.Net Core WebAPI 中间件
    一、前言到这篇文章为止,关于.NET"温故知新"系列的基础知识就完结了,从这一系列的系统回顾和再学习,对于.NETcore、ASP.NETCORE又有了一个新的认识。不光是从使用,还包括这些知识点的原理,虽然深入原理谈不上,但对于日常使用也够了,我想的是知其然,知其所以然。在实际开发过程中可能......
  • 个人面试笔试记录与复盘
    据说把鼠标放在标题后面可以查看目录哦~用时间洪流泡的茶,根本就品不出茶味,所以,不要诧异,坚定步伐,慢慢细品,就好! 红色是雷,绿色是个人感觉公司氛围挺不错,黑色为没从hr/面试官对话中体会到公司氛围。瑞鑫天算社招,上来笔试180题,6套题(C++,python,强化学习,机器学习,numpy,pandas),30......
  • sql-labs通关记录
    less9这一关是考察盲注先利用时间盲注观察闭合形式之后用python脚本进行注入我这里是ctfshow里面的题目可以对照修改代码点击查看代码importrequestsif__name__=='__main__':url='http://sql/Less-9/?id=1%27'result=''i=0whileTrue:......