C#读写系统日志

//整理于2005-10-5

//flashicp

作为商业应用程序,尤其是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

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows常用控件的使用、Windows不错控件的使用、DataGridView数据控件、自定义用户控件、文件基本操作、文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效应用Excel、基本图形绘制、图像处理技术、常用图表应用、动画处理技术、音频与视频控制。配书光盘附带了实例的源程序和部分视等第1篇 C#编程基础篇 第1章 C#开发环境的使用 2 1.1 Visual Studio开发环境的安装与配置 3   实例001 配置合适的Visual Studio 2008开发环境 3   实例002 设置程序代码行号 4   实例003 使开发环境全屏显示 5   实例004 根据需要创建所需解决方案 6 1.2 Visual Studio开发环境的使用 7   实例005 为程序设置版本和帮助信息 7   实例006 设置Windows应用程序启动窗体 8   实例007 统一窗体中控件的字体设置 9   实例008 通过“格式”菜单布局窗体 10 1.3 快速开发项目必备 10   实例009 为项目添加DLL文件引用 10   实例010 为项目添加已有类 11   实例011 为项目添加第三方控件 12 实例012 为项目添加已有窗体 13 第2章 C#语言基础应用 15 2.1 代码的注释 16   实例013 对单行代码进行注释 16   实例014 快速对多行代码进行注释 17   实例015 使用“///”标记给代码段添加说明 18 2.2 运算符的使用 20   实例016 使用引号运算符进行赋值 20   实例017 使用算术运算符开发简单计算器 21   实例018 使用“^”运算符对数字进行加密 22   实例019 巧用位移运算符获取汉字编码值 24   实例020 使用条件运算符判断指定年份是不是闰年 25   实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27   实例022 使用checked关键字处理“溢出”错误 27   实例023 使用typeof关键字获取类的内部结构 28   实例024 使用using关键字有效回收资源 29   实例025 使用is关键字检查对象是否与给定类型兼容 30   实例026 使用as关键字将对象转换为指定类型 32 2.4 流程控制语句的使用 34   实例027 小明去学校和医院分别要走哪条路 34   实例028 利用条件语句判断用户登录身份 35   实例029 判断指定月份属于哪个季节 36   实例030 使用switch语句更改窗体颜色 37   实例031 循环向控制台中输入内容 38   实例032 递归算法的经典面试题 39   实例033 制作一个数字猜猜看小游戏 40 实例034 使用goto语句在数组中搜索指定图书 42 第3章 字符串处理技术 44 3.1 字符及字符串转换 45   实例035 将字母全部转换为大写或小写 45   实例036 字母与ASCII码的转换 46   实例037 汉字与区位码的转换 48   实例038 将汉字转换为拼音 49 3.2 常用字符及字符串操作 50   实例039 根据标点符号对字符串进行分行 50   实例040 判断用户输入的用户名是否正确 51   实例041 将字符串的每个字符进行颠倒输出 52   实例042 去掉字符串中的所有空格 54   实例043 从字符串中分离文件路径、文件名及扩展名 55   实例044 获取字符串中汉字的个数 57   实例045 批量替换某一类字符串 58   实例046 对字符串进行加密与解密 59 3.3 常用数字处理技术 61   实例047 判断输入的货币值是否为数字 61   实例048 对计算结果进行四舍五入 62   实例049 商品金额的大小写转换 63   实例050 设置货币值中使用的小数位数 64   实例051 格式化输入数据为货币格式 65   实例052 开发一个进制转换器 66 3.4 日期时间格式的数据处理 67   实例053 动态获得系统当前日期和时间 67   实例054 手动设置系统日期时间 69   实例055 根据生日自动计算员工年龄 70   实例056 根据年份判断十二生肖 71   实例0
C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用的属性、方法、类和各种技术,每一个知识点都配有具体的示例,便于读者理解。 《C#全能速查宝典》所讲的知识点按照功能和字母进行排序,读者既可以按照功能顺序查找,又可以按照字母顺序学习。 《C#全能速查宝典》不仅适合C#程序设计初学者,也可作为中、高级程序开发人员的参考手册。 ============================================================ 图书目录 第1章 C#语言基础 1 1.1 常用概念、关键字及基础类 1 1.1.1 abstract关键字——抽象 1 1.1.2 as操作符——引用类型转换 3 1.1.3 base关键字——从派生类中访问基类的成员 3 1.1.4 变量——存储特定类型的数据 4 1.1.5 Console类——控制台中的输入流、输出流和错误流 6 1.1.6 Convert类——类型转换 8 1.1.7 常量——值不改变的量 9 1.1.8 Dispose方法——释放资源 10 1.1.9 迭代器——相同类型的值的有序序列的一段代码 10 1.1.10 泛型——处理算法和数据结构 11 1.1.11 分部类——将一个类分成几部分 12 1.1.12 is操作符——检查变量是否为指定的类型 14 1.1.13 lock关键字——锁定 15 1.1.14 namespace关键字——定义命名空间 15 1.1.15 new运算符——创建一个新的类型实例 16 1.1.16 Object类型——所有类型的基类 17 1.1.17 OOP技术——面向对象编程技术 18 1.1.18 ReadLine方法——从当前流中读取一行字符 20 1.1.19 typeof运算符——获得系统原型对象的类型 21 1.1.20 using关键字——引入命名空间 22 1.1.21 WriteLine方法——写入流 23 1.2 数学方法类——Math 25 1.2.1 Abs方法——返回指定数字的绝对值 25 1.2.2 Acos方法——返回余弦值为指定数字的角度 26 1.2.3 Asin方法——返回正弦值为指定数字的角度 26 1.2.4 Atan方法——返回正切值为指定数字的角度 27 1.2.5 Pow方法——返回指定数字的指定次幂 27 1.2.6 Round方法——将小数值舍入到指定的精度 28 1.3 流程控制语句 29 1.3.1 break语句——跳出循环 29 1.3.2 case语句——比较表达式以确定结果 30 1.3.3 continue语句——继续执行下一个循环 31 1.3.4 do…while语句——循环语句 31 1.3.5 for语句——循环语句 32 1.3.6 foreach语句——枚举一个集合的元素 33 1.3.7 goto语句——跳转到标签 34 1.3.8 if…else语句——条件判断语句 36 1.3.9 return语句——返回 38 1.3.10 switch case语句——条件判断语句 39 1.3.11 throw语句——显式引发异常 40 1.3.12 try…catch…finally语句——捕捉异常 42 1.3.13 while语句——循环语句 43 1.4 字符串处理 44 1.4.1 AddDays方法——添加天数 44 1.4.2 AddString方法——添加文本字符串 45 1.4.3 Compare方法——比较两个字符串 46 1.4.4 CompareTo方法——比较两个字符串对象 47 1.4.5 DATEADD函数——在指定日期上加一段时间 48 1.4.6 DateDiff方法——获取日期时间的间隔数 48 1.4.7 DateTime结构——表示时间
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值