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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
           操作系统: 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事件日志时要注意,如果事件日志文件已满,可以在事件属性对话框(在事件右键菜单中选择“属性”菜单项会弹出该对话框)中增加日志文件的大小,或清空当前事件中的日志。事件属性对话框如下图所示。





 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/214966,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
22天前
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
44 13
|
1月前
|
缓存 安全 网络协议
使用事件日志识别常见 Windows 错误
事件查看器是Windows操作系统中的标准诊断工具,用于记录系统事件,包括硬件问题、软件中断和系统行为等详细信息。通过分析这些日志,管理员能够追踪和解决系统错误。访问方法包括使用快捷键Win + R输入eventvwr.msc,或通过控制面板进入。事件查看器中的每条记录包含事件ID、来源和描述,帮助识别和解决问题。常见错误如蓝屏死机、DLL错误、驱动程序错误等,可通过更新驱动程序、运行系统诊断、使用恢复功能等方式解决。
|
1月前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
2月前
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
62 2
|
4月前
|
C#
C#一分钟浅谈:委托与事件的实现方式
本文详细介绍了C#编程中委托与事件的基础知识及应用场景。首先解释了委托的概念,包括定义与使用方法;接着介绍了事件这一基于委托的特殊类型,展示了如何在类中定义事件及跨类订阅与处理事件;最后讨论了常见问题如事件未处理异常、重复订阅及内存泄漏等,并提出了相应的解决方案。通过本文,读者将全面掌握委托与事件的使用技巧,提升应用程序的设计与开发水平。
180 7
|
4月前
|
存储 运维 监控
超级好用的C++实用库之日志类
超级好用的C++实用库之日志类
62 0
|
5月前
|
图形学 C# 开发者
全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
154 0
|
5月前
|
XML 数据格式 Windows
【Azure 云服务】Azure Cloud Service (Extended Support) 云服务开启诊断日志插件 WAD Extension (Windows Azure Diagnostic) 无法正常工作的原因
【Azure 云服务】Azure Cloud Service (Extended Support) 云服务开启诊断日志插件 WAD Extension (Windows Azure Diagnostic) 无法正常工作的原因
|
监控 安全 Windows
Windows系统日志分析
Windows系统的日志文件存放在C:/windows/system32/winevt/logs目录下 Windows系统的日志分为三种
595 0
Windows系统日志分析

热门文章

最新文章