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

  • 相关阅读:
    iscsi一致性的测试验证方法
    ceph各个版本之间参数变化分析
    rgw的rgw_thread_pool_size配置调整
    rgw前端替换civetweb为beast
    配置内网访问的TV
    关于vm.min_free_kbytes的合理设置推测
    rbd的删除回收站功能
    python爬取微博热门话题榜
    Selenium+Pytest自动化测试框架—禅道实战
    python带参数装饰器的两种写法
  • 原文地址:https://www.cnblogs.com/hambert/p/4252190.html
Copyright © 2011-2022 走看看