zoukankan      html  css  js  c++  java
  • C#使用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. 建立日志类型
    The  code:
    代码后运行!">
    1.   
    2. /// <summary>  
    3.    /// 日志类型   
    4.    /// </summary>  
    5.    public enum LogType    
    6.    {    
    7.        /// <summary>  
    8.        /// 信息   
    9.        /// </summary>  
    10.        Info,    
    11.        /// <summary>  
    12.        /// 警告   
    13.        /// </summary>  
    14.        Warning,   
    15.        /// <summary>  
    16.        /// 错误   
    17.        /// </summary>  
    18.        Error,    
    19.        /// <summary>  
    20.        /// 跟踪   
    21.        /// </summary>  
    22.        Trace,    
    23.        /// <summary>  
    24.        /// 不记录日志   
    25.        /// </summary>  
    26.        Off    
    27.    }  

    2. 写日志的方法
    The  code:
    1.     
    2. /// <summary>  
    3.     /// 写日志   
    4.     /// </summary>  
    5.     /// <param name="traceLevel">日志类型(Info,Warning,Error,Trance,Off)</param>  
    6.     /// <param name="user">用户</param>  
    7.     /// <param name="module">模块</param>  
    8.     /// <param name="function">功能</param>  
    9.     /// <param name="message">消息</param>  
    10.     public static void WriteLog(LogType logType,string user, string module, string function, string message)   
    11.     {   
    12.         try  
    13.         {   
    14.             // 类型为 LogType.Off 的 不记录日志   
    15.             if (logType == LogType.Off)   
    16.                 return;   
    17.   
    18.             JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();   
    19.   
    20.             // 每天一个日志文件(.XML 文件),日志的文件名称为:JobLog yyyy-MM-dd.xml   
    21.             string jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog " +   
    22.                 DateTime.Today.ToString("yyyy-MM-dd") + ".xml";   
    23.             if (!File.Exists(jobLogFile))   
    24.                 t.WriteXml(jobLogFile);   
    25.   
    26.             // 从 .XML 文件中读取日志   
    27.             t.ReadXml(jobLogFile);   
    28.   
    29.             // 添加一条日志   
    30.             JobLogDataSet.JobLogRow r = t.NewJobLogRow();   
    31.             r.TraceLevel = logType.ToString();   
    32.             r.User = user;   
    33.             r.Datetime = DateTime.Now;   
    34.             r.Module = module;   
    35.             r.Function = function;   
    36.             r.Message = message;   
    37.             t.AddJobLogRow(r);   
    38.   
    39.             // 保存到日志到 XML 文件   
    40.             t.WriteXml(jobLogFile);   
    41.         }   
    42.         catch (Exception)   
    43.         {}   
    44.     }  

    3. 读日志的方法
    The  code:
    1. /// <summary>  
    2.     /// 读日志   
    3.     /// </summary>  
    4.     /// <returns>返回读取日志的 DataTable</returns>  
    5.     public static JobLogDataSet.JobLogDataTable ReadLog()   
    6.     {   
    7.         JobLogDataSet.JobLogDataTable jobLogDataTable = new JobLogDataSet.JobLogDataTable();   
    8.         try  
    9.         {   
    10.             // 从应用程序文件夹中,获得所有日志文件 JobLog*.xml   
    11.             string[] jobLogFiles = Directory.GetFiles(   
    12.                 AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly);   
    13.   
    14.             // 把每个日志记录读取到日志 DataTable 中   
    15.             foreach (string jobLogFile in jobLogFiles)   
    16.             {   
    17.                 if (File.Exists(jobLogFile))   
    18.                 {   
    19.                     // 读取所有日志文件到临时 DataTable   
    20.                     JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();   
    21.                     t.ReadXml(jobLogFile);   
    22.                     // 导入日志记录到主日志 DataTable   
    23.                     foreach (JobLogDataSet.JobLogRow r in t)   
    24.                         jobLogDataTable.ImportRow(r);   
    25.                 }   
    26.             }   
    27.             // 返回读取的日志 DataTable   
    28.             return jobLogDataTable;   
    29.         }   
    30.         catch (Exception)   
    31.         {   
    32.             return jobLogDataTable;   
    33.         }   
    34.     }  

    4. 在需要写日志的地方,直接调用 WriteLog 方法即可。
  • 相关阅读:
    不可或缺 Windows Native (15)
    不可或缺 Windows Native (14)
    不可或缺 Windows Native (13)
    不可或缺 Windows Native (12)
    不可或缺 Windows Native (11)
    不可或缺 Windows Native (10)
    不可或缺 Windows Native (9)
    不可或缺 Windows Native (8)
    不可或缺 Windows Native (7)
    不可或缺 Windows Native (6)
  • 原文地址:https://www.cnblogs.com/scgw/p/1512508.html
Copyright © 2011-2022 走看看