xml记录操作日志(此例子是记录控件的操作,实际项目中用到觉得有用,与网上其他帖子不约而同)

结合我开发的项目而言,选择用xml方式在记录button和combox的操作日志,可以不占用数据库空间,调用简单;

在vs2008中,第一步就是要建立数据集:JobLogDataSet.xsd,在项目解决方案下右键-添加-新建项-数据集

 

    然后在打开的窗口中建立JobLog表,添加自己需要的字段,下图中TraceLevel是指日志的类型,User是用户,Datetime是操作时间,Module是操作的模块,Function是操作控件的功能,Message是消息,如果需要记录的还要多,可以自行添加字段不过要注意的是在类型上面要注意字段的类型是string还是datetime等等如下例就是datetime的数据类型就是datetime,其他的都是string类型.

接着在后台代码中建立一个日至类型的枚举,是哪种日志Type,常用的就是以下这个类中的五种.
 public enum LogType
        {
            //信息,警告,错误,跟踪,不记录日志
            Info, Warning, Error, Trace, Off
        }
然后就是些操作日志的方法了:
        /// <summary>
        /// 写Combox的的SelectChangs事件日志
        /// </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 WriteLogType(LogType logType, string user, string module, string function, string message)
        {
            try
            {
                // 类型为 LogType.Off 的 不记录日志
                if (logType == LogType.Off)
                    return;

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

                 string jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog" + "XXXX" + ".xml";
                if (!File.Exists(jobLogFile))
                    t.WriteXml(jobLogFile);

                // 从 .XML 文件中读取日志
                t.ReadXml(jobLogFile);
                //如果xml里面有记录,清空
                if (t.Rows.Count > 0)
                {
                    t.Rows.Clear();
                }


                // 重新添加日志
                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)
            { }

        }

下面是读日志的方法:

        /// <summary>
        /// 读XXXX日志
        /// </summary>
        /// <returns>返回读取日志的DataTable</returns>
        public static JobLogDataSet.JobLogDataTable ReadLog()
        {
            JobLogDataSet.JobLogDataTable jobLogDataTable = new JobLogDataSet.JobLogDataTable();
            try
            {
               //从应用程序文件夹中,获取XXXX日志文件
                string jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLogXXXX.xml";

                    if (File.Exists(jobLogFile))
                    {
                        // 读取染色选择日志文件到临时 DataTable
                        JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
                        t.ReadXml(jobLogFile);
                        // 导入日志记录到主日志 DataTable
                        foreach (JobLogDataSet.JobLogRow r in t)
                            jobLogDataTable.ImportRow(r);
                    }
                  return jobLogDataTable;
            }
            catch (Exception)
            {
                return jobLogDataTable;
            }
        }

如果项目有需要不用留日志则可以添加一个删除方法,在程序退出后删除所有日志XML.

        //每次程序退出都清空所生成的记录日志
        public static void Delete()
        {
            try
            {
                string[] XmlFiles =Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory,"JobLog*.xml",SearchOption.TopDirectoryOnly);
                foreach (string jobXmlFile in XmlFiles)
                {
                    if (File.Exists(jobXmlFile))
                        File.Delete(jobXmlFile);
                }
                
            }
            catch (Exception)
            { }
        }


最后直接在需要记录操作日志的地方调用方法就行!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值