c#调试输出和日志程序

using System;
using System.Diagnostics;
using System.IO;


namespace Common
{
    public class Log
    {
        private const string output = @"d:/test.txt";       //输出目录
        private const string logFile = @"d:/file/log.txt";  //日志目录


        public static string write(string msg)
        {
            StreamWriter writer = new StreamWriter(output, true);
            writer.Write(DateTime.Now.ToString("HH:mm:ss  "));
            writer.WriteLine(msg);
            writer.Close();
            return msg;
        }


        public static string record(string msg, string filePath = logFile)
        {
            StreamWriter writer = new StreamWriter(filePath, true);
            writer.Write(DateTime.Now.ToString("yy/MM/dd HH:mm:ss") + "  ");
            writer.WriteLine(msg);
            writer.Close();
            return msg;
        }


        public static void test()
        {
            writeTrace("dfd", 2);
        }


        // 摘要:  
        // 打印调用类堆栈
        //detail根据详细级别分为2个等级
        public static int writeTrace(string msg, int detail = 1)
        {
            StreamWriter writer = new StreamWriter(output, true);
            StackFrame[] frames = new StackTrace(true).GetFrames();
            int framCount = frames.Length - 1;
            string time = DateTime.Now.ToString("yy/MM/dd HH:mm:ss");
            writer.WriteLine(time + ",  invokes:" + framCount + ",  message: " + msg);


            for (int i = 0; i < framCount; i++)
            {
                StackFrame frame = frames[framCount - i];   //以调用顺序打印
                for (int j = 0; j < i; j++)
                {
                    writer.Write(" ");
                }
                switch (detail)
                {
                    case 1:       //类,方法
                        writer.Write("-> " + frame.GetMethod().DeclaringType.Name + "." + frame.GetMethod().Name + "()");
                        break;
                    case 2:       //文件,详细的类,详细方法
                        string fileName = frame.GetFileName().Substring(frame.GetFileName().LastIndexOf(@"\"));
                        writer.Write(fileName + ": " + frame.GetFileLineNumber());
                        writer.WriteLine("  " + frame.GetType() + ": " + frame.GetMethod());
                        break;
                    case 3:       //详细文件,详细的类,详细方法
                        writer.Write(frame.GetFileName() + ": " + frame.GetFileLineNumber());
                        writer.WriteLine("  " + frame.GetType() + ": " + frame.GetMethod());
                        break;
                }
            }
            writer.WriteLine();


            writer.Close();
            return framCount;
        }
    }


    class LogResult
    {   //返回结果集, 搁置
        public string msg { get; set; }
        public int framCount { get; set; }
        public string methods { get; set; }
        public string types { get; set; }
    }
}

猜你喜欢

转载自blog.csdn.net/fw6669998/article/details/73159329
今日推荐