zoukankan      html  css  js  c++  java
  • 自制迷你日志类

      写网站程序的时候,都要把异常写入日志吧,比较常用的是Log4Net,不过我要求不高,只需要把异常和信息记在网站服务器的网站目录下就可以了,于是我自己写了一个。

        public static class Logger
        {
            private static readonly object Obj = new object();
    
            public static void Log(string title, string msg)
            {
                LogError(title, msg);
            }
    
            public static void Error(string title, Exception ex)
            {
                if (ex == null)
                {
                    return;
                }
    
                var sb = new StringBuilder();
                sb.AppendLine(ex.Message).AppendLine(ex.StackTrace);
    
                foreach (IDictionary value in ex.Data.Values)
                {
                    if (value != null)
                    {
                        foreach (DictionaryEntry entry in value)
                        {
                            sb.Append("Key:").Append(entry.Key).Append(",Value:").AppendLine(entry.Value.ToString());
                        }
                    }
                }
    
                if (ex.InnerException != null)
                {
                    sb.Append("InnerMessage:")
                        .AppendLine(ex.InnerException.Message)
                        .Append("InnerStackTrace:")
                        .AppendLine(ex.InnerException.StackTrace);
    
                    foreach (IDictionary value in ex.InnerException.Data.Values)
                    {
                        if (value != null)
                        {
                            foreach (DictionaryEntry entry in value)
                            {
                                sb.Append("InnerKey:")
                                    .Append(entry.Key)
                                    .Append(",InnerValue:")
                                    .AppendLine(entry.Value.ToString());
                            }
                        }
                    }
                }
    
                LogError(title, sb.ToString());
            }
    
            private static void LogError(string title, string msg)
            {
                string filePath = Path.GetDirectoryName(HttpRuntime.AppDomainAppPath) + "\log\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
    
                lock (Obj)
                {
                    try
                    {
                        File.AppendAllText(filePath, string.Format("{0:HH:mm:ss}:{1}:{2}
    ", DateTime.Now, title, msg));
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }
        }

      记录普通信息没什么难的,记录异常的话就要选择记录哪些信息了,这里我没把Source,HelpLink和TargetSite记录下来,因为我感觉他们没什么用,这里唯一难点的就是写日志加锁,为何要加锁呢,因为同一文件同一时间只能被一个进行写入呀,把日志类搞成静态类也是出于这个考虑的。

  • 相关阅读:
    pytest入门 及allure2报告生成
    java 常用集合list与Set、Map区别及适用场景总结
    通俗地解释脏读、不可重复读、幻读
    Serializable接口的意义和用法
    maven基础
    Class.forName()用法详解
    关于getClass(),Object.class,getClassLoader的理解
    maven(一) maven到底是个啥玩意~
    TCP/IP协议族体系结构:死也不能忘记的四个层
    HTML表单常用标签
  • 原文地址:https://www.cnblogs.com/hambert/p/4252190.html
Copyright © 2011-2022 走看看