热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> XML编程>>正文内容

使用XML编程文件记录操作日志

发布时间:2009年08月29日点击数: 未知

记录应用程式的操作日志可以使用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;

            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)
        {}
    }

 

4. 读日志的method

///
    /// 读日志
    ///
    /// 返回读取日志的 DataTable
    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;
        }

    }

 

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

本站热点业务

更多模板/案例展示

热门推荐

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作