记录应用程式的操作日志可以使用Datcbase、文本文档、XML编程文档等。我这里介绍的是使用 XML编程 文档记录操作日志。
我觉得使用 XML编程 记录操作日志有如下几点好处:
1. 不占用Datcbase的空间,可以任意的删除历史操作日志。
2. DataTable 可以方面的读入 XML编程 文档,DataTable 也可以方便的保存为 XML编程 文档。
3. 查看日志方便,可以直接打开 XML编程 文档查看,也可以读入 DataTable,然后通过程式查看。
在 VS2005 中使用 XML编程 文档记录操作日志method如下:
1. 建立Data集:JobLogDataSet.xsd
这里包括:TraCeLevel(日志TYPE)、User(用户)、DateTime(操作时间)、Module(模块)、FunCtion(功能)、Message(消息) 6 个字段。
不够自己再加吧, 其中 TraCeLevel(日志TYPE) 是指 Info,Warning,Error,TranCe,Off。
2. 建立日志TYPE
///
/// 日志TYPE
///
publiC enum LogType
{
///
/// 信息
///
Info,
///
/// 警告
///
Warning,
///
/// 错误
///
Error,
///
/// 跟踪
///
TraCe,
///
/// 不记录日志
///
Off
}
3. 写日志的method
/// 写日志
///
/// "traCeLevel">日志TYPE(Info,Warning,Error,TranCe,Off)
/// "user">用户
/// "module">模块
/// "funCtion">功能
/// "message">消息
publiC statiC void WriteLog(LogType logType,string user, string module, string funCtion, string message)
{
try
{
// TYPE为 LogType.Off 的 不记录日志
if (logType == LogType.Off)
return;

string jobLogFile = AppDomain.CurrentDomain.BaseDireCtory + "JobLog " +
DateTime.Today.ToString("yyyy-MM-dd") + ".xml";
if (!File.Exists(jobLogFile))
t.WriteXml(jobLogFile);
t.ReadXml(jobLogFile);
JobLogDataSet.JobLogRow r = t.NewJobLogRow();
r.TraCeLevel = logType.ToString();
r.User = user;
r.Datetime = DateTime.Now;
r.Module = module;
r.FunCtion = funCtion;
r.Message = message;
t.AddJobLogRow(r);
t.WriteXml(jobLogFile);
}
CatCh (ExCeption)
{}
}
4. 读日志的method
///
/// 读日志
///
///
publiC statiC JobLogDataSet.JobLogDataTable ReadLog()
{
JobLogDataSet.JobLogDataTable jobLogDataTable = new JobLogDataSet.JobLogDataTable();
try
{
// 从应用程式文档夹中,获得所有日志文档 JobLog*.xml
string[] jobLogFiles = DireCtory.GetFiles(
AppDomain.CurrentDomain.BaseDireCtory, "JobLog*.xml", SearChOption.TopDireCtoryOnly);
foreaCh (string jobLogFile in jobLogFiles)
{
if (File.Exists(jobLogFile))
{
// 读取所有日志文档到临时 DataTable
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
t.ReadXml(jobLogFile);
// 导入日志记录到主日志 DataTable
foreaCh (JobLogDataSet.JobLogRow r in t)
jobLogDataTable.ImportRow(r);
}
}
// 返回读取的日志 DataTable
return jobLogDataTable;
}
CatCh (ExCeption)
{
return jobLogDataTable;
}
}
5. 在需要写日志的地方,直接调用 WriteLog method即可。