1. Оформить xml, который должен содержать следующую информацию:
1. Дата и время: дата и время возникновения ошибки/исключения.
2. Имя файла: имя файла, в котором произошла ошибка/исключение.
3. Имя класса: имя класса, в котором произошла ошибка/исключение.
4. Имя метода: имя метода, в котором произошла ошибка/исключение.
5. Errormethod: имя функции, содержащее код ошибки.
6. Сообщение: информация об ошибке/исключении.
7. Подробности об ошибке: Подробности об ошибке/исключении.
8. IP: IP-адрес клиента.
9. URL-адрес: URL-адрес, по которому произошла ошибка.
ДемоXML:
ДемоXML
<?xml version="1.0"coding="utf-8"?>
<журнал ошибок>
<ошибка>
<datetime>дата-время</datetime>
<имя_файла>имя_файла</имя_файла>
<имя класса>имя класса</имя класса>
<имя метода>имя метода</имя метода>
<метод ошибки>метод ошибки</метод ошибки>
<messsage>Сообщение об ошибке</message>
<errordetails>Подробности здесь</errordetails>
<IP>IP-адрес</IP>
<url>URL</url>
</ошибка>
</errorlog>
2. Создайте класс обработки ошибок: errorHandler.cs. Для внутреннего метода WriteError требуется два параметра: Exception и FileName:
errorHandler.cs
использование системы;
использование System.Collections.Generic;
использование System.Text;
использование System.Xml;
использование System.Reflection;
использование System.Diagnostics;
пространство имен code_center
{
обработчик ошибок публичного класса
{
строка _strErrorMessage, _strDetails, _strClassName, _strMethodName;
DateTime _dtOccuranceTime = новый DateTime();
публичный errorHandler()
{
}
public errorHandler (время DateTime, имя класса строки, имя метода строки,
строка errorMessage, сведения о строке)
{
_dtOccuranceTime = время;
_strClassName = имя класса;
_strDetails = подробности;
_strErrorMessage = errorMessage;
_strMethodName = Имя метода;
}
public static void WriteError (исключение ex)
{
WriteError(например, "");
}
public static void WriteError (исключение ex, строковое имя файла)
{
Документ XmlDocument = новый XmlDocument();
строка strRootPath =
System.Configuration.ConfigurationManager.AppSettings["путь к файлу журнала"].ToString();
строка xmlPath = System.Web.HttpContext.Current.Server.MapPath(strRootPath);
документ.Load(@xmlPath);
XmlNode новыйXMLNode, старыйXMLNode;
oldXMLNode = doc.ChildNodes[1].ChildNodes[0];
новыйXMLNode = старыйXMLNode.CloneNode(истина);
StackTrace stackTrace = новый StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase MethodBase = stackFrame.GetMethod();
newXMLNode.ChildNodes[0].InnerText = DateTime.Now.ToString();
newXMLNode.ChildNodes[1].InnerText = имя_файла;
newXMLNode.ChildNodes[2].InnerText = MethodBase.DeclaringType.FullName;
newXMLNode.ChildNodes[3].InnerText = MethodBase.Name;
newXMLNode.ChildNodes[4].InnerText = ex.TargetSite.Name;
newXMLNode.ChildNodes[5].InnerText = ex.Message;
newXMLNode.ChildNodes[6].InnerText = ex.StackTrace;
newXMLNode.ChildNodes[7].InnerText = System.Web.HttpContext.Current.Request.UserHostAddress;
newXMLNode.ChildNodes[8].InnerText = System.Web.HttpContext.Current.Request.Url.OriginalString;
doc.ChildNodes[1].AppendChild(newXMLNode);
документ.Сохранить(@xmlPath);
документ.RemoveAll();
}
}
}
3. Добавьте в Web.config:
<Настройки приложения>
<add key="logfilepath" value="~/errorHandling/errorlog.xml"/>
</appSettings>
4. Тест: добавьте на свой сайт два фрагмента тестового кода.
1. В Page_Load:
Страница_Загрузка
общедоступный частичный класс _Default: System.Web.UI.Page
{
protected void Page_Load (отправитель объекта, EventArgs e)
{
пытаться
{
выдать новое исключение («Пользовательская ошибка»);
}
поймать (Исключение ex)
{
Response.Write(ex.Message);
kirin.errorHandler.WriteError(например, «Default.aspx.cs»);
}
}
}
2. Добавьте: в Application_Error:
void Application_Error (отправитель объекта, EventArgs e)
{
code_center.errorHandler.WriteError(Server.GetLastError().GetBaseException(),
"Global.asax");
}
3. Результаты исключения Page_Load:
ошибкаXML
<ошибка>
<datetime>29-1-2010 9:29:24</datetime>
<имя файла>Default.aspx.vb</имя файла>
<classname>кирин._Default</classname>
<имя_метода>Загрузка_страницы</имя_метода>
<errormethod>Загрузка_страницы</errormethod>
<messsage>Пользовательская ошибка</message>
<errordetails> В kirin._Default.Page_Load(Object sender, EventArgs e) местоположение C:Demokirin_code_centerkirinDefault.aspx.cs: номер строки 16</errordetails>
<IP>127.0.0.1</IP>
<url>http://localhost:2192/default.aspx</url>
</ошибка>
5. Полный код:/Files/zhuqil/kirin_errorHandler.rar.
Автор: Чжу Цилинь Источник: http://zhuqil.cnblogs.com
Авторские права на эту статью принадлежат автору и Blog Park. Перепечатка приветствуется. Однако данное заявление должно быть сохранено без согласия автора, а ссылка на оригинальный текст должна быть предоставлена на видном месте на странице статьи. право на юридическую ответственность сохраняется.