C#添加程序执行时长监控日志
2021/7/20 9:06:23
本文主要是介绍C#添加程序执行时长监控日志,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
/// <summary> /// C#添加程序执行时长监控日志 /// </summary> public class StopwatchLog { static Task write; static List<string> Logs = new List<string>(); static StopwatchLog() { write = Task.Run(() => { while (true) { try { Thread.Sleep(2000); var logs = Logs; Logs = new List<string>(); string file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "timewatch.log"); File.AppendAllLines(file, logs); } catch { } } }); } /// <summary> /// 初始化请求 /// </summary> public static void Start() { HttpContext.Current.Items["request"] = DateTime.Now.ToUniversalTime().Ticks.ToString(); } /// <summary> /// 开始记录点 /// </summary> /// <returns></returns> public static Stopwatch StartLog() { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); return stopwatch; } /// <summary> /// 结束记录点 /// </summary> /// <param name="stopwatch"></param> /// <param name="point"></param> public static void EndLog(Stopwatch stopwatch, string tag = "") { stopwatch.Stop(); //当前堆栈信息 StackTrace st = new StackTrace(); StackFrame[] sfs = st.GetFrames(); //过虑的方法名称,以下方法将不会出现在返回的方法调用列表中 string _filterdName = "ResponseWrite,ResponseWriteError,"; string _fullName = string.Empty; for (int i = 1; i < sfs.Length; ++i) { //非用户代码,系统方法及后面的都是系统调用,不获取用户代码调用结束 if (StackFrame.OFFSET_UNKNOWN == sfs[i].GetILOffset()) break; string _methodName = sfs[i].GetMethod().Name; if (_filterdName.Contains(_methodName)) continue; _fullName = _methodName + "-" + _fullName; } _fullName = string.IsNullOrEmpty(tag) ? _fullName.TrimEnd('-') : _fullName + tag; var request = Convert.ToString(HttpContext.Current.Items["request"]); var log = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")},{request},{_fullName},{stopwatch.ElapsedMilliseconds}"; Logs.Add(log); } }
这篇关于C#添加程序执行时长监控日志的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID
- 2024-01-23用CI/CD工具Vela部署Elasticsearch + C# 如何使用
- 2024-01-23.NET开源的简单、快速、强大的前后端分离后台权限管理系统