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





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

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
监控 安全 BI
防火墙事件日志及日志分析
在网络安全防护体系中,防火墙作为抵御外部威胁的第一道防线,其重要性不言而喻。而对防火墙日志进行分析,更是深入了解网络流量、发现潜在安全风险的关键手段。
1055 1
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
638 8
|
存储 安全 UED
Cyber Triage 3.13 for Windows - 数字取证和事件响应
Cyber Triage 3.13 for Windows - 数字取证和事件响应
553 71
Cyber Triage 3.13 for Windows - 数字取证和事件响应
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
399 13
|
缓存 安全 网络协议
使用事件日志识别常见 Windows 错误
事件查看器是Windows操作系统中的标准诊断工具,用于记录系统事件,包括硬件问题、软件中断和系统行为等详细信息。通过分析这些日志,管理员能够追踪和解决系统错误。访问方法包括使用快捷键Win + R输入eventvwr.msc,或通过控制面板进入。事件查看器中的每条记录包含事件ID、来源和描述,帮助识别和解决问题。常见错误如蓝屏死机、DLL错误、驱动程序错误等,可通过更新驱动程序、运行系统诊断、使用恢复功能等方式解决。
1831 4
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
736 2
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
746 2
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
1110 0
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
405 2
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
916 0