使用XML文件记录操作日志

记录应用程序的操作日志可以使用数据库、文本文件、XML文件等。我这里介绍的是使用 XML 文件记录操作日志。
我觉得使用 XML 记录操作日志有如下几点好处:
1. 不占用数据库的空间,可以任意的删除历史操作日志。
2. DataTable 可以方面的读入 XML 文件,DataTable 也可以方便的保存为 XML 文件。
3. 查看日志方便,可以直接打开 XML 文件查看,也可以读入 DataTable,然后通过程序查看。

在 VS2005 中使用 XML 文件记录操作日志方法如下:
1. 建立数据集:JobLogDataSet.xsd
    这里包括:TraceLevel(日志类型)、User(用户)、DateTime(操作时间)、Module(模块)、Function(功能)、Message(消息) 6 个字段。
    不够自己再加吧, 其中 TraceLevel(日志类型) 是指 Info,Warning,Error,Trance,Off。

   

2. 建立日志类型
     ///   <summary>
    
///  日志类型
    
///   </summary>
     public   enum  LogType 
    { 
        
///   <summary>
        
///  信息
        
///   </summary>
        Info, 
        
///   <summary>
        
///  警告
        
///   </summary>
        Warning,
        
///   <summary>
        
///  错误
        
///   </summary>
        Error, 
        
///   <summary>
        
///  跟踪
        
///   </summary>
        Trace, 
        
///   <summary>
        
///  不记录日志
        
///   </summary>
        Off 
    }

2. 写日志的方法
     ///   <summary>
    
///  写日志
    
///   </summary>
    
///   <param name="traceLevel">日志 类型(Info,Warning,Error,Trance,Off) </param>
    
///   <param name="user"> 用户 </param>
    
///   <param name="module"> 模块 </param>
    
///   <param name="function"> 功能 </param>
    
///   <param name="message"> 消息 </param>
     public   static   void  WriteLog(LogType logType, string  user,  string  module,  string  function,  string  message)
    {
        
try
        {
            
//  类型为 LogType.Off 的 不记录日志
             if  (logType  ==  LogType.Off)
                
return ;

            JobLogDataSet.JobLogDataTable t 
=   new  JobLogDataSet.JobLogDataTable();

            
//  每天一个日志文件(.XML 文件),日志的文件名称为:JobLog yyyy-MM-dd.xml
             string  jobLogFile  =  AppDomain.CurrentDomain.BaseDirectory  +   " JobLog  "   +  
                DateTime.Today.ToString(
" yyyy-MM-dd " +   " .xml " ;
            
if  ( ! File.Exists(jobLogFile))
                t.WriteXml(jobLogFile);

            
//  从 .XML 文件中读取日志
            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);

            
//  保存到日志到 XML 文件
            t.WriteXml(jobLogFile);
        }
        
catch  (Exception)
        {}
    }

3. 读日志的方法
     ///   <summary>
    
///  读日志
    
///   </summary>
    
///   <returns> 返回读取日志的 DataTable </returns>
     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);

            
//  把每个日志记录读取到日志 DataTable 中
             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;
        }
    }

4. 在需要写日志的地方,直接调用 WriteLog 方法即可。

本文地址: http://www.cnblogs.com/anjou/archive/2007/04/10/705986.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>