首页 > 代码库 > 自制迷你日志类

自制迷你日志类

  写网站程序的时候,都要把异常写入日志吧,比较常用的是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}\r\n", DateTime.Now, title, msg));                }                catch (Exception e)                {                    Console.WriteLine(e);                }            }        }    }

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

自制迷你日志类