庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>C#语言>.NET>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

在.NET(正式版)环境下读写系统日志

 作者:wirte    日期:2005-8-8 9:48:00
字号选择〖 〗/ 双击滚屏 单击停止   
     作为商业应用程序,尤其是WEB下的应用程序,安全问题是第一位的。这里所说的安全包括两个方面,一是系统本身的安全,也就是系统本身的强壮性,另一方面是系统在使用时,用户的误操作,或恶意破坏时引起的安全问题。
  
  本文并不想介绍系统全方面的问题,如果你有兴趣的可以去查阅相关资料。这里,我想要介绍的是如何在系统发生错误,或者遭到破坏时,如何把相关信息记录下来。比如,当有人试图非法登录的时候,如何记录下时间,他所在机器的IP等一系列信息,以便管理员采取相关的措施。
  
  有两种方式可供选择,一是将相关信息写入指定的数据库的表中。另一种方法就是写入系统日志文件里。将信息写入数据库,在.NET环境下,需要实例化许多对象,如SqlConnection ,SqlCommand 等,还要进行数据库的连接等工作,仅仅是为了插入一条记录。相对来说,这种方式比较消耗系统资源,如果,系统本身就没有数据库支持,那么这种方法根本不可行。本文要介绍的是第二种方式,将信息写入系统日志
  
  在.NET的System.Diagnostics命名空间里提供了几个类,专门用来操作系统日志
  
  一:向日志里写入信息
  
  首先,我们要引用System.Diagnostics命名空间。然后,我们来实例化EventLog类,我们的大部分工作都是用这个类来完成。
  
  EventLog sample=new EventLog();
  
  该类提供的WriteEntry方法,让我们将信息写入系统日志,一般是写入应用程序日志里。方法的定义如下
  
  public void WriteEntry(
   string source,
   string message,
   EventLogEntryType type,
   Int eventID,
   short category,
   byte[] rawData
  );
  
  例如:
  
  EventLog.WriteEntr("sourcei","message",EventLogEntryType.Warning ,11,21);
  
  介绍一下该方法参数的含意。
  
  1) Source 表示记录的来源,字符串型
  
  2) Message 表示记录的相关信息,字符串型
  
  3) Type 表示记录类型,是枚举类型,有以下选项
  
  ü Error 错误
  
  ü Warning 警告
  
  ü Information 信息
  
  ü SuccessAudit 成功审核
  
  ü FailureAudit 失败审核
  
  4) EventID 表示事件ID号,整型
  
  5) Category 表示事件的分类,短整型
  
  6) RawData 记录和事件相关的二进制信息,字节数组
  
  试一下,在事件查看器的应用程序日志里,你会看到刚插入的记录。
  
  
  
  二:从日志里读取信息
  
  从日志里读取信息,我们需要使用的是EventLog的Entries方法,该方法返回的是一个集合类EventLogEntryCollection的实例,在该集合类中储存的是EventLogEntry类的实例,该类中存储了日志里各记录的信息。我们可以用以下的程序来返回日志信息。
  
  首先,我们要实例化一个EventLog类
  
  EventLog sample=new EventLog();
  
  和写入信息不同的是,我们在这需要指定我们从那个日志里读记录
  
  sample.Log="Application";
  
  我们指定的是应用程序日志,当然,我们可以选择别的日志,比如系统日志System,还有安全日志Security
  
  声明一个EventLogEntryCollection类并给它赋值
  
  EventLogEntryCollection myCollection=sample.Entries;
  
  这样,应用程序日志里的信息都存放在了myCollection对象中,我们可以来读取其中的信息。
  
  我们用foreach语句来访问myCollection中的所有EventLogEntry对象
  
  
  
  
  
  foreach(EventLogEntry test in myCollection)
  
   {
  
   Console.WriteLine(test.Message,test.Source,test.EventID);
  
   }
  
  这样,你就可以在屏幕上看到日志里的一些信息,当然,你还可以访问EventLogEntry对象的其他属性来获取你所需要的信息。
  
  本文只是简要介绍了一下如何读写系统的日志文件的方法,有很多细节并没有详细介绍,比如,如何读写别人机器的日志,如何出错处理等,有兴趣的化可以参考MSDN。
上一篇:浅析.Net下的多线程编程    下一篇:.NET Delegates: A C# Bedtime Story中文版(下篇)  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: wirte
信息来源: 网络 录入时间: 2005-8-8 9:48:00
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿