using System;
using System.IO;
using System.Xml;
/// <summary>
/// 写入一条错误日志记录。
/// </summary>
/// <param name="user">当前用户名。</param>
/// <param name="ex">异常对象。</param>
public static void WriteEntry(String user, Exception ex)
{
if (ex == null)
{
WriteEntry(user, "Exception is null.", "");
}
else
{
if (ex.InnerException != null)
{
ex = ex.InnerException;
}
WriteEntry(user, ex.Message, ex.StackTrace);
}
}
/// <summary>
/// 写入一条错误日志记录。
/// </summary>
/// <param name="user">当前用户名。</param>
/// <param name="message">消息文本。</param>
/// <param name="stackTrace">堆栈跟踪。</param>
public static void WriteEntry(String user, String message, String stackTrace)
{
try
{
String logDirectory = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Logs";
String logFile = logDirectory + "\\" + DateTime.Today.ToString("yyyyMM") + ".xml";
if (!Directory.Exists(logDirectory))
{
Directory.CreateDirectory(logDirectory);
}
if (!File.Exists(logFile))
{
String newLine = Environment.NewLine;
System.Text.StringBuilder logContent = new System.Text.StringBuilder();
logContent.Append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + newLine);
logContent.Append("<exceptions>" + newLine);
logContent.Append("</exceptions>");
File.WriteAllText(logFile, logContent.ToString(), System.Text.Encoding.UTF8);
}
XmlDocument logDoc = new XmlDocument();
logDoc.Load(logFile);
XmlElement itemElement = logDoc.CreateElement("exception");
logDoc.DocumentElement.AppendChild(itemElement);
XmlElement userElement = logDoc.CreateElement("user");
userElement.InnerText = user;
itemElement.AppendChild(userElement);
XmlElement dateElement = logDoc.CreateElement("time");
dateElement.InnerText = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
itemElement.AppendChild(dateElement);
XmlElement messageElement = logDoc.CreateElement("message");
messageElement.InnerText = message;
itemElement.AppendChild(messageElement);
XmlElement stackTraceElement = logDoc.CreateElement("stackTrace");
stackTraceElement.InnerText = stackTrace;
itemElement.AppendChild(stackTraceElement);
logDoc.Save(logFile);
}
catch
{
}
}
}