注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

快乐小屋

 
 
 

日志

 
 

基于ArcGIS10.0和Oracle10g的空间数据管理平台七(C#开发)-日志操作类  

2013-06-14 15:11:48|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
   这篇博文很简单,就是介绍一下各种日志的写入操作,因为写日志的操作随时都需要,所以专门实现一个类来完成。日志一般情况可以写入文件,但是在本项目实现 是直接写入Oracle数据库,主要是方便查询和按分类管理这些日志。日志的管理主要是一个单独的功能模块,写日志的功能可能遍布每一个其他功能模块。这 里介绍写日志,主要写三种日志,具体实现如下各部分代码所示。

1.操作日志,就是用户使用本系统产生的一些行为日志,方便监控哪些用户分别作了哪些操作。

  1. /// <summary>  
  2. /// 写操作日志  
  3. /// </summary>  
  4. /// <param name="username">操作用户</param>  
  5. /// <param name="type">操作类型</param>  
  6. /// <param name="content">操作内容</param>  
  7. /// <returns></returns>  
  8. public static bool writeLog(string username, string type, string content)  
  9. {  
  10.     bool result = false;  
  11.     SqlHelper sh = new SqlHelper();  
  12.     Hashtable ht = new Hashtable();  
  13.   
  14.     ht.Add("USERNAME", username);  
  15.     ht.Add("OPTTIME", DateTime.Now);  
  16.     ht.Add("TYPE", type);  
  17.     ht.Add("DESCRIPTION", content);  
  18.   
  19.     if (sh.Insert("optlog", ht) > 0)  
  20.     {  
  21.         result = true;  
  22.     }  
  23.     else  
  24.     {  
  25.         result = false;  
  26.     }  
  27.     return result;  
  28. }  

2.写数据库更新的日志信息,这些日志信息主要用于各个数据库之间的同步。分为空间表和属性表的修改,如此划分主要是因为空间表和一般的属性表同步策略是不一样的。

  1. /// <summary>  
  2.   /// 写更新日志  
  3.   /// </summary>  
  4.   /// <param name="strTableName">表名</param>  
  5.   /// <param name="strTableType">表的类型(0:属性表;1:空间表)</param>  
  6.   /// <param name="strOptType">操作类型(目前全部当作update(修改))</param>  
  7.   /// <returns></returns>  
  8.   public static bool writeUpdateDataLog(string strTableName, string strTableType, string strOptType)  
  9.   {  
  10.       bool result = false;  
  11.       SqlHelper sh = new SqlHelper();  
  12.       string sql = "select * from updatedata_log";  
  13.       //自己增长ID值  
  14.       int id = 0;  
  15.       if (sh.GetRecordCount(sql) > 0)  
  16.       {  
  17.           sql = "select max(id) from updatedata_log";  
  18.           OracleDataReader odr = sh.ReturnDataReader(sql);  
  19.             
  20.           if (odr.Read())  
  21.           {  
  22.               id = int.Parse(odr[0].ToString());  
  23.               id++;  
  24.           }  
  25.       }  
  26.       else  
  27.       {  
  28.           id = 0;  
  29.       }  
  30.         
  31.       Hashtable ht = new Hashtable();  
  32.       //如果表已经存在就更新,否则就插入一条记录  
  33.       sql = "select * from updatedata_log where tablename='" + strTableName + "'";  
  34.       if (sh.GetRecordCount(sql) > 0)  
  35.       {  
  36.           ht.Add("OPERDATE", DateTime.Now);  
  37.   
  38.           if (sh.Update("updatedata_log""tablename='" + strTableName + "'", ht) > 0)  
  39.           {  
  40.               result = true;  
  41.           }   
  42.           else  
  43.           {  
  44.               result = false;  
  45.           }  
  46.       }  
  47.       else  
  48.       {  
  49.           ht.Add("ID", id);  
  50.           ht.Add("TABLENAME", strTableName);  
  51.           ht.Add("TABLETYPE", strTableType);  
  52.           ht.Add("OPERTYPE", strOptType);  
  53.           ht.Add("OPERDATE", DateTime.Now);  
  54.   
  55.           if (sh.Insert("updatedata_log", ht) > 0)  
  56.           {  
  57.               result = true;  
  58.           }  
  59.           else  
  60.           {  
  61.               result = false;  
  62.           }  
  63.       }  
  64.         
  65.       return result;  
  66.   }  


3.数据库监控日志,主要监控数据的运行状态是否良好,以便能够及时发现数据库的问题,比如性能问题;并可以根据这些日志信息来执行数据库的优化方案。这些监控日志的产生是通过执行一些数据库的监控脚本SQL语句得到的,具体的SQL语句大家可以网上去查询一些。

  1. /// <summary>  
  2. /// 写数据库监控警告日志  
  3. /// </summary>  
  4. /// <param name="strType">警告类型</param>  
  5. /// <param name="strContent">具体内容</param>  
  6. /// <returns></returns>  
  7. public static bool writeAlertLog(string strType, string strContent)  
  8. {  
  9.     bool result = false;  
  10.     SqlHelper sh = new SqlHelper();  
  11.     Hashtable ht = new Hashtable();  
  12.   
  13.     ht.Add("HAPPENTIME", DateTime.Now);  
  14.     ht.Add("TYPE", strType);  
  15.     ht.Add("CONTENT", strContent);  
  16.   
  17.     if (sh.Insert("jcsjk_alert_log", ht) > 0)  
  18.     {  
  19.         result = true;  
  20.     }  
  21.     else  
  22.     {  
  23.         result = false;  
  24.     }  
  25.     return result;  
  26. }  
    三种日志的写入操作都介绍完毕,这里没有单独读日志的操作函数,是因为当时系统没有这个必要,这个系统日志的管理是集中式管理,即对日志的查询、读取和删除都是在一个独立的模块完成的,后面会详细介绍!
  评论这张
 
阅读(175)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018