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

转载 2004年07月12日 04:53:00

标题 在.NET(正式版)环境下读写系统日志 wirte(原作)

关键字 c#,.net,日志,

 


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

 

作为商业应用程序,尤其是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环境下读写系统日志

作为商业应用程序,尤其是WEB下的应用程序,安全问题是第一位的。这里所说的安全包括两个方面,一是系统本身的安全,也就是系统本身的强壮性,另一方面是系统在使用时,用户的误操作,或恶意破坏时引起的安全问题...
  • ddxkjddx
  • ddxkjddx
  • 2010年08月05日 18:46
  • 445

.net下读写系统日志

平常电脑出问题了,总是习惯性的去看下系统日志,经常能发现问题,但是一直不会把自己软件的信息写到日志中,今天用c#实现了这个功能,特此记之!.net框架里的类:EventLog一般而言,系统日志有三个条...
  • greenerycn
  • greenerycn
  • 2007年03月06日 22:10
  • 1674

在没有.net环境的机子上运行C#程序——方法一

在没有.net环境的机子上运行C#程序——方法一
  • yuanhuiqiao
  • yuanhuiqiao
  • 2010年06月28日 15:51
  • 1456

在ASP.Net中写系统日志

在ASP.Net中写系统日志 ASP.Net默认情况下,是没有写系统日志的权限的。要在ASP.Net中写系统日志,首先我们要先有其权限。我们可以通过设置或修改注册表的权限来解决。 ...
  • ycl295644
  • ycl295644
  • 2016年01月22日 15:13
  • 838

winpe 下如何运行.NETFramewor 环境的程序

在PE下是无法运行需要.NET环境的程序。请问这种情况下有解决方案码?谢谢了!!   很简单 可以用 DotNetBox3.5,不用装.Net Framework也能运行.Net程序 下载 D...
  • luozhuang
  • luozhuang
  • 2009年12月24日 09:36
  • 4439

Android 读取系统日志LogCat

读取日志需要的权限 uses-permission android:name="android.permission.READ_LOGS"/> 主要代码 package mt...
  • Charein
  • Charein
  • 2014年01月06日 21:09
  • 3669

ASP.NET运行环境配置

转自http://www.cnblogs.com/koeltp/archive/2012/02/08/2343394.html Win7旗舰版中的IIS配置asp.net的运行环境 ...
  • pomelozero
  • pomelozero
  • 2015年06月10日 16:32
  • 2586

MFC Unicode下读取文件

CStdioFile在UNICODE环境下读取文本行〔转〕   转载信息http://zongtongyi.blogbus.com/logs/8372306.html ...
  • logotostudent
  • logotostudent
  • 2013年01月06日 17:35
  • 537

使用CStdioFile 读写UNICODE文档

 一:写文档   1  创建文档并写入内容 CString filePath=L"C:\\unicode.txt"; CStdioFile wfile; if (!wfile.O...
  • starain2000
  • starain2000
  • 2014年11月21日 00:50
  • 278

在.NET环境下发送邮件

在微软.NET环境中的System.Web.Mail的命名空间里,提供了几个类,使得你根本就不需要了解POP3等一系列网络协议,就可以在程序中轻松的发送邮件,非常简单,本文就简要的介绍一下,如何用C#...
  • 21aspnet
  • 21aspnet
  • 2007年03月20日 23:03
  • 2358
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在.NET(正式版)环境下读写系统日志
举报原因:
原因补充:

(最多只允许输入30个字)