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记录下来,因为我感觉他们没什么用,这里唯一难点的就是写日志加锁,为何要加锁呢,因为同一文件同一时间只能被一个进行写入呀,把日志类搞成静态类也是出于这个考虑的。

  • 相关阅读:
    AFNetworking 使用
    AFNetWork 请求https
    Label加下滑线
    iOS 学习资料
    调用系统的打电话,发短信,邮件,蓝牙
    NSObject
    本地消息和消息推送
    AFNNetworking 中json格式不标准的解决办法
    UitableView 动态高度的优化 提高寻星效率
    cell 高度的计算
  • 原文地址:https://www.cnblogs.com/hambert/p/4252190.html
Copyright © 2011-2022 走看看