使用EventLog类写Windows事件日志
此文转自 银河使者
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事件日志相关推荐
- Windows 事件日志分析管理
Windows 设备是大多数商业网络中最受欢迎的选择.为了处理这些设备生成的数 TB 的事件日志数据,安全管理员需要使用功能强大的日志管理工具(如EventLog Analyzer),该工具可以通过自 ...
- windows log日志分割_如何将日志记录到 Windows事件日志 中
每当出现一些未捕获异常时,操作系统都会将异常信息写入到 Windows 事件日志 中,可以通过 Windows 事件查看器 查看,如下图: 这篇文章将会讨论如何使用编程的方式将日志记录到 Window ...
- Windows事件日志监控
大多数数据泄露属内部人员而为,但各企业在监控内部网络活动方面仍存在不足. 无论是大型还是小型企业,监控内部网络活动已成为其主要要求.要保护网络安全以防范泄露和威胁,各企业需要采取积极的措施来保证其网络 ...
- Syslog和Windows事件日志收集
Syslog和Windows事件日志收集 EventLog Analyzer从分布式Windows设备收集事件日志,或从分布式Linux和UNIX设备.交换机和路由器(Cisco)收集syslog.事 ...
- Windows版本Oracle审计日志,【情报】Oracle ORA-28056: 未能将审计记录写入 Windows 事件日志...
今日创建新数据库时一直提示,写入audit到Windows 事件日志失败(Writing audit records to Windows Event Log failed),一路忽略,算是创建完成. ...
- SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志(转)...
前言: 今天遇到这个sql服务无法启用 .无法登陆 的情况..在google 百度 搜了一下.发现很多网站都是采集来的数据..(很奇怪这些采集站都那么靠前!) 照着文章里边的方法去试试都不行,,,后来 ...
- 应急响应 | 通过Python对Windows事件日志进行解析
Python-evtx python-evtx是用于最近的Windows事件日志文件(文件扩展名为" .evtx"的文件)的纯Python解析器.该模块提供对File和Chunk标 ...
- Windows事件日志快速分析
文章目录 前言 PowerShell命令方法 PowerShell常用命令 1. 检查服务器最近开关机时间 2. 最近登录失败的详细信息 3. 统计指定时间至今的事件数量 4. 只关注指定时间某一类型 ...
- 使用ELK分析Windows事件日志
这是ELK入门到实践系列的第三篇文章,分享如何使用ELK分析Windows事件日志. Windows系统日志是记录系统中硬件.软件和系统问题的信息,同时还可以监视系统中发生的事件.用户可以通过它来检查 ...
最新文章
- Linux Shell 工作原理
- 为了研究因果关系,原来科学家在这么多方向上都有尝试
- 实现一个webpack模块解析器
- python数据分析实战:数据可视化的一些基本操作
- 初识ES-什么是elasticsearch
- Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释
- eclipse中的JSP项目连接mysql报错,找不到jdbc驱动,java项目却没问题
- 搭建测试环境_当面试时被问到“搭建过测试环境吗”, 身为小白要怎么回答?...
- vue后台如何刷新过期的token_Vue刷新token,判断token是否过期
- 计算机科学与导论教案,计算机科学导论电子教案.ppt
- JavaScript高级程序设计读书笔记--语言基础
- Android木马病毒com.schemedroid的分析报告
- 12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(中)
- 实践项目一 项目开发团队分配管理
- 算法训练Day24 | 回溯算法理论基础;LeetCode77.组合(经典的回溯问题)
- 数据分析(1):对比分析法
- 2023二建学天案例突破101问
- 关于CSDN博客域名
- 字符串处理:输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如输入BEIJING, 123, 3,则输出:BEI123JING。
- 【JZOJ】2867. Contra