1/1页1 跳转到查看:250
发新话题 回复该主题

消息捕获类

消息捕获类

在日常编码当中,我们经常要处理一些错误,为了更好的方便得到错误信息,我仿一些代码写了如下的类。*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
using System;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
using System.Collections;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
namespace JFrameWork*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public class MessageStack*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
static Message _message = null;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
static System.Collections.Stack _stack = new System.Collections.Stack();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
static int _totalofpush = 0;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
// public MessageStack(Message message)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
// {*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
// Push(message);*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
// }*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static string ToMessageString()*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
try*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
string error ="";*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
while(_stack.Count > 0)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
Pop();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
error += "\r\n[Time]:"+_message.time.ToString("yyyy-MM-dd hh:mm:ss");*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
error += "\r\n[Body]:"+_message.body;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
error += "\r\n[State]:"+_message.state.ToString();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return error;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
catch(System.Exception e)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
MessageStack.Push(new Message("[Source]:"+e.Source + "\r\n[Message]:" +e.Message +"\r\n[StackTrace]:"+e.StackTrace +"\r\n[HelpLink]:"+e.HelpLink));*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return "Error!";*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static void WriteLog()*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
string xml = System.Environment.CurrentDirectory + @"/Big.Mouth.Z." + System.DateTime.Now.ToString("yyyyMMddhhmmss") + ".Log";*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
WriteLog(xml);*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static void WriteLog(string xml)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
try*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
// string xml = @"c:/Message" + System.DateTime.Now.ToString("yyyyMMddhhmmss") + ".log";*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(xml,System.Text.Encoding.UTF8);*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.Formatting = System.Xml.Formatting.Indented;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.IndentChar = '\t';*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteStartDocument();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteComment("Message Error Log." + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteStartElement("MessageInfo");*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
System.Collections.Stack tmp = (System.Collections.Stack)_stack.Clone();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
int i = 0;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
while(tmp.Count > 0)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
i++;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
Message tmpmessage = (Message)tmp.Pop();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteStartElement("Message");*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteElementString("Row",i.ToString());*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteStartElement("Body");*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteCData("\r\n"+tmpmessage.body+"\r\n");*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteEndElement();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteElementString("Time",tmpmessage.time.ToString("yyyy-MM-dd hh:mm:ss"));*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteElementString("State",tmpmessage.state.ToString());*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteEndElement();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteEndElement();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteEndDocument();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.WriteComment("Author: Bigmouthz@GMail.Com");*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.Flush();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
writer.Close();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
tmp.Clear();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
catch(System.Exception e)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
MessageStack.Push(new Message("[Source]:"+e.Source + "\r\n[Message]:" +e.Message +"\r\n[StackTrace]:"+e.StackTrace +"\r\n[HelpLink]:"+e.HelpLink));*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static void Push(Message message)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_message = message;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_stack.Push(_message);*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_totalofpush++;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static Message Pop()*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
if (_stack.Count > 0)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_message = (Message)_stack.Pop();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
else*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_message = null;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return _message;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static void Clear()*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_stack.Clear();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static object Clone()*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return _stack.Clone();*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static string Body*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
get {*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
if (_message != null)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return _message.body;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
else*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return "Message is Null!";*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static System.DateTime Time*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
get {*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
if (_message != null)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return _message.time;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
else*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return System.DateTime.Now;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static bool State*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
get {*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
if (_message != null)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return _message.state;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
else*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
return true;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static int Count*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
get { return _stack.Count; }*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public static int TotalOfPush*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
get { return _totalofpush;}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public sealed class Message*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
private string _body;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
private System.DateTime _time ;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
private bool _state;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public Message(string body, bool state)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_body = body;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_time = System.DateTime.Now;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_state = state;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public Message(string body)*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_body = body;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_time = System.DateTime.Now;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
_state = false;*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public string body*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
get { return _body;}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public System.DateTime time*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
get { return _time;}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
public bool state*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
{*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
get { return _state;}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
}*ß"bx%ŽŒforum.entlib.net.cni(Õ W†óUù
追随理想和美人而生活!

TOP

 
1/1页1 跳转到
发表新主题 回复该主题