C#3.0杂谈(1):使用EventLog类写Windows事件日志

简介:
本文为原创,如需转载,请注明作者和出处,谢谢!

            操作系统: 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事件日志时要注意,如果事件日志文件已满,可以在事件属性对话框(在事件右键菜单中选择“属性”菜单项会弹出该对话框)中增加日志文件的大小,或清空当前事件中的日志。事件属性对话框如下图所示。

本文转自银河使者博客园博客,原文链接http://www.cnblogs.com/nokiaguy/archive/2009/02/26/1398708.html如需转载请自行联系原作者

银河使者

 

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
监控 安全 BI
防火墙事件日志及日志分析
在网络安全防护体系中,防火墙作为抵御外部威胁的第一道防线,其重要性不言而喻。而对防火墙日志进行分析,更是深入了解网络流量、发现潜在安全风险的关键手段。
930 1
|
9月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
444 1
|
9月前
|
监控 安全 搜索推荐
使用EventLog Analyzer进行日志取证分析
EventLog Analyzer助力企业通过集中采集、归档与分析系统日志及syslog,快速构建“数字犯罪现场”,精准追溯安全事件根源。其强大搜索功能可秒级定位入侵时间、人员与路径,生成合规与取证报表,确保日志安全防篡改,大幅提升调查效率,为执法提供有力证据支持。
347 0
|
9月前
|
存储 运维 监控
EventLog Analyzer与市场上其他日志审计工具相比有哪些优势?
企业设备激增导致日志管理困难,传统审计方式效率低、难合规。ManageEngine EventLog Analyzer 提供全类型日志集中采集、实时监控与智能分析,支持等保、GDPR等合规需求,具备轻量部署、安全加固、自动化告警与SIEM能力,助力企业提升安全运营与风险响应水平。
203 0
|
9月前
|
监控 安全 数据可视化
使用EventLog Analyzer进行Apache日志监控和日志分析
Apache日志分析是监控网站访问、安全与性能的关键手段,涵盖访问日志与错误日志。通过EventLog Analyzer可实现日志的集中管理、实时监控与可视化分析,支持多版本Apache及Tomcat,助力企业合规与安全防护。
340 0
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。
300 0
|
数据库连接 测试技术 Windows
【YashanDB知识库】windows配置ODBC跟踪日志, 使用日志定位问题
【YashanDB知识库】windows配置ODBC跟踪日志, 使用日志定位问题
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
289 13
|
缓存 安全 网络协议
使用事件日志识别常见 Windows 错误
事件查看器是Windows操作系统中的标准诊断工具,用于记录系统事件,包括硬件问题、软件中断和系统行为等详细信息。通过分析这些日志,管理员能够追踪和解决系统错误。访问方法包括使用快捷键Win + R输入eventvwr.msc,或通过控制面板进入。事件查看器中的每条记录包含事件ID、来源和描述,帮助识别和解决问题。常见错误如蓝屏死机、DLL错误、驱动程序错误等,可通过更新驱动程序、运行系统诊断、使用恢复功能等方式解决。
1591 4
|
9月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
392 19