• 注册表,以及记录当前调用方法的基本信息的代码


    public class TestStackTrace
        {
            List<object> paramValueItems = new List<object>();
            public void TestMethod(int num,string msg) 
            {
                //注册表的写入
                RegistryKey rk = Registry.LocalMachine;
                rk.SetValue("LOLRegister", "Do");
                //记录方法参数的值
                paramValueItems.Clear();
                paramValueItems.Add(num);
                paramValueItems.Add(msg);
    
                WriteLog(paramValueItems);
    
                num += num;
                msg = num.ToString() + "hello word";
            }
            public void WriteLog(List<object> items)
            {
                try
                {
                    //如果可以输出日志,就执行
                    //if (IsEnableOutPutLog == true)
                    //{
                        StackTrace st = new StackTrace(true);
                        //这个括号里面的参数从0开始,0就是自己,1就是上一个
                        MethodBase methodName = st.GetFrame(1).GetMethod();
                        //得到参数集合
                        ParameterInfo[] paramInfo = st.GetFrame(1).GetMethod().GetParameters();
                        //文件路径
                        string fileName = "MethodInfoLog.txt";
    
                        //定义文件信息对象
                        FileInfo finfo = new FileInfo(fileName);
    
                        //判断文件是否存在以及是否大于2M 2048000
                        if (finfo.Exists && finfo.Length > 2048000)
                        {
                            try
                            {
                                //删除该文件
                                finfo.Delete();
                            }
                            catch (Exception e)
                            {
    
                            }
    
                        }
                        using (StreamWriter writer = new StreamWriter(fileName, true, System.Text.Encoding.UTF8, 1024))
                        {
                            writer.WriteLine("方法名称:" + methodName.Name);
                            writer.WriteLine("调用时间: " + DateTime.Now);
                            writer.WriteLine("--------------------------------------------------------------------");
                            for (int i = 0; i < items.Count; i++)
                            {
                                writer.WriteLine("参数名称:" + paramInfo[i].Name);
                                writer.WriteLine("参数类型:" + paramInfo[i].ParameterType);
                                writer.WriteLine("参数值:" + items[i].ToString());
                                writer.WriteLine("参数位置: " + paramInfo[i].Position);
                                writer.WriteLine(String.Empty);
                                writer.WriteLine("*********************************************************************");
                                writer.Flush();
                                writer.Close();
                            }
    
                        }
    
                    //}
                }
                catch (Exception ex)
                {
                    //WriteLog(ex, "方法记录出现异常!");
                }
            }
  • 相关阅读:
    workerman需要的php模块posix、pcntl、sysvshm、sysvmsg缺少,怎么办
    Linux操作:
    推荐!手把手教你使用Git
    Ninject简介(转)
    新年奉献MVC+EF(CODEFIRST)+EASYUI医药MIS系统(转)
    微软开源代码
    .NET分布式事务处理(转)
    IIS负载均衡(转)
    借助LVS+Keepalived实现负载均衡(转)
    WCF和ASP.NET Web API在应用上的选择(转)
  • 原文地址:https://www.cnblogs.com/llcdbk/p/4495092.html
Copyright © 2020-2023  润新知