首页 > 代码库 > 自制迷你日志类
自制迷你日志类
写网站程序的时候,都要把异常写入日志吧,比较常用的是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记录下来,因为我感觉他们没什么用,这里唯一难点的就是写日志加锁,为何要加锁呢,因为同一文件同一时间只能被一个进行写入呀,把日志类搞成静态类也是出于这个考虑的。
自制迷你日志类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。