此文转自  银河使者
 http://www.cnblogs.com/nokiaguy/archive/2009/02/26/1398708.html

多谢作者分享

操作系统: Windows XP SP3

开发工具: Visual Studio 2008

语言: C# 3.0

.net Framework: 3.5

在程序中经常需要将指定的信息(包括异常信息和正常处理信息)写到日志中。在C#3.0中可以使用EventLog类将各种信息直接写入Windows日志。EventLog类在System.Diagnostics命名空间中。我们可以在“管理工具” > "事件查看器“中可以查看我们写入的Windows日志,如下图所示:

下面是一个使用EventLog类向应用程序(Application)写入日志的例子,日志类型使用EventLogEntryType枚举类型指定。

EventLog log = new EventLog();
try
{
log.Source = "我的应用程序";
log.WriteEntry("处理信息1", EventLogEntryType.Information);
log.WriteEntry("处理信息2", EventLogEntryType.Information);
throw new System.IO.FileNotFoundException("readme.txt文件未找到");
}
catch (System.IO.FileNotFoundException exception)
{
log.WriteEntry("处理信息2", EventLogEntryType.Error);
}

在运行上面的代码后,将会写入如下图所示的日志信息。

其中WriteEntry方法的第一个参数指定的信息通过双击相应的日志可以查看,如下图所示。

在默认情况下,EventLog类将日志写在Application事件里,通过EventLog的构造方法的参数也可以指定其他的日志,如系统(System)事件,但要注意在向非Application事件写日志信息时,需要先使用CreateEventSource方法将事件源添加到当前事件中。下面的例子演示了如何向“系统”事件中添加日志信息:

EventLog log = new EventLog("System");
//  首先应判断日志来源是否存在,一个日志来源只能同时与一个事件绑定s
if(!EventLog.SourceExists("My Application"))
EventLog.CreateEventSource("My Application", "System");
try
{
log.Source = "My Application";
log.WriteEntry("处理信息1", EventLogEntryType.Information);
log.WriteEntry("处理信息2", EventLogEntryType.Information);
throw new System.IO.FileNotFoundException("readme.txt文件未找到");
}
catch (System.IO.FileNotFoundException exception)
{
log.WriteEntry(exception.Message, EventLogEntryType.Error);
}

在执行上面的代码后,向System事件写入的日志如下图所示。

我们也可以通过EventLog类的添加自己的事件,代码如下:

EventLog log = new EventLog("MyEvent");
//  首先应判断日志来源是否存在,一个日志来源只能同时与一个事件绑定s
if(!EventLog.SourceExists("New Application"))
EventLog.CreateEventSource("New Application", "MyEvent");
try
{
log.Source = "New Applications";
log.WriteEntry("处理信息1", EventLogEntryType.Information);
log.WriteEntry("处理信息2", EventLogEntryType.Information);
throw new System.IO.FileNotFoundException("readme.txt文件未找到");
}
catch (System.IO.FileNotFoundException exception)
{
log.WriteEntry(exception.Message, EventLogEntryType.Error);
}

上面的代码添加了一个MyEvent事件,添加后的事件查看器界面如下图所示。

从上图可以看出,左侧的事件查看器中多了个MyEvent事件。
    我们还可以使用EventLog类来枚举指定事件中的日志,如下面的代码所示:

if (EventLog.Exists("MyEvent"))
{
EventLog log = new EventLog("MyEvent");
foreach (EventLogEntry entry in log.Entries)
{
textBox1.Text += entry.Message + ":";
}
}

上面的代码枚举了刚才建立的MyEvent事件中的所有日志,并输出了每一个日志的信息(就是WriteEntry方法的第一个参数指定的信息)。除此之外,我们还可以使用Delete方法删除指定的事件,使用DeleteEventSource方法删除日志源。
    在写入Windows事件日志时要注意,如果事件日志文件已满,可以在事件属性对话框(在事件右键菜单中选择“属性”菜单项会弹出该对话框)中增加日志文件的大小,或清空当前事件中的日志。事件属性对话框如下图所示。

使用EventLog类写Windows事件日志相关推荐

  1. Windows 事件日志分析管理

    Windows 设备是大多数商业网络中最受欢迎的选择.为了处理这些设备生成的数 TB 的事件日志数据,安全管理员需要使用功能强大的日志管理工具(如EventLog Analyzer),该工具可以通过自 ...

  2. windows log日志分割_如何将日志记录到 Windows事件日志 中

    每当出现一些未捕获异常时,操作系统都会将异常信息写入到 Windows 事件日志 中,可以通过 Windows 事件查看器 查看,如下图: 这篇文章将会讨论如何使用编程的方式将日志记录到 Window ...

  3. Windows事件日志监控

    大多数数据泄露属内部人员而为,但各企业在监控内部网络活动方面仍存在不足. 无论是大型还是小型企业,监控内部网络活动已成为其主要要求.要保护网络安全以防范泄露和威胁,各企业需要采取积极的措施来保证其网络 ...

  4. Syslog和Windows事件日志收集

    Syslog和Windows事件日志收集 EventLog Analyzer从分布式Windows设备收集事件日志,或从分布式Linux和UNIX设备.交换机和路由器(Cisco)收集syslog.事 ...

  5. Windows版本Oracle审计日志,【情报】Oracle ORA-28056: 未能将审计记录写入 Windows 事件日志...

    今日创建新数据库时一直提示,写入audit到Windows 事件日志失败(Writing audit records to Windows Event Log failed),一路忽略,算是创建完成. ...

  6. SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志(转)...

    前言: 今天遇到这个sql服务无法启用 .无法登陆 的情况..在google 百度 搜了一下.发现很多网站都是采集来的数据..(很奇怪这些采集站都那么靠前!) 照着文章里边的方法去试试都不行,,,后来 ...

  7. 应急响应 | 通过Python对Windows事件日志进行解析

    Python-evtx python-evtx是用于最近的Windows事件日志文件(文件扩展名为" .evtx"的文件)的纯Python解析器.该模块提供对File和Chunk标 ...

  8. Windows事件日志快速分析

    文章目录 前言 PowerShell命令方法 PowerShell常用命令 1. 检查服务器最近开关机时间 2. 最近登录失败的详细信息 3. 统计指定时间至今的事件数量 4. 只关注指定时间某一类型 ...

  9. 使用ELK分析Windows事件日志

    这是ELK入门到实践系列的第三篇文章,分享如何使用ELK分析Windows事件日志. Windows系统日志是记录系统中硬件.软件和系统问题的信息,同时还可以监视系统中发生的事件.用户可以通过它来检查 ...

最新文章

  1. Linux Shell 工作原理
  2. 为了研究因果关系,原来科学家在这么多方向上都有尝试
  3. 实现一个webpack模块解析器
  4. python数据分析实战:数据可视化的一些基本操作
  5. 初识ES-什么是elasticsearch
  6. Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释
  7. eclipse中的JSP项目连接mysql报错,找不到jdbc驱动,java项目却没问题
  8. 搭建测试环境_当面试时被问到“搭建过测试环境吗”, 身为小白要怎么回答?...
  9. vue后台如何刷新过期的token_Vue刷新token,判断token是否过期
  10. 计算机科学与导论教案,计算机科学导论电子教案.ppt
  11. JavaScript高级程序设计读书笔记--语言基础
  12. Android木马病毒com.schemedroid的分析报告
  13. 12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(中)
  14. 实践项目一 项目开发团队分配管理
  15. 算法训练Day24 | 回溯算法理论基础;LeetCode77.组合(经典的回溯问题)
  16. 数据分析(1):对比分析法
  17. 2023二建学天案例突破101问
  18. 关于CSDN博客域名
  19. 字符串处理:输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如输入BEIJING, 123, 3,则输出:BEI123JING。
  20. 【JZOJ】2867. Contra

热门文章

  1. 数据同步工具—SeaTunnel简介
  2. 华东师范大学 硕士毕业论文模版 overleaf版
  3. 计算机网络中的网络安全
  4. 曾经开发的一个武冈市市民意见采集系统
  5. C语言逻辑语句问题集锦
  6. 【电子器件笔记3】电容参数和选型
  7. 黑马程序员-江远云 我的java语言基础之路4-语句篇
  8. c语言二叉树族谱管理系统,数据结构课程设计报告(用二叉树实现家谱管理系统).doc...
  9. 充电桩APP开发方案
  10. 关于DBA或SA这个职业的讨论