当前位置: 首页 > 图文教程 > XML家族 > XML > 使用XML文件记录操作日志

XML
XML简易教程之四
XML与HTML的结合(上)
XML与HTML的结合(下)
XML入门的常见问题(一)
XML入门的常见问题(二)
XMLHTTP资料
什么是XML
什么是 XML Web Service
XML正在接管Web服务 成为SOA的基础
怎么样在网页上读取远程xml的数据
XML教程—编写结构完整的XML文档
读写xml文件的2个小函数
XML文档的基本操作
初学者如何开发出一个高质量的J2EE系统
优化 JavaScript 代码
自动更新程序的设计框架
使Firefox对XML的处理兼容IE的节点处理方法
WML学习之四 锚和任务
WML学习之五 显示表单
WML学习之六 事件

使用XML文件记录操作日志


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 45 ::
收藏到网摘: n/a

    记录应用程序的操作日志可以使用数据库、文本文件、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 方法即可