LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#如何查看/写入日志到Windows事件查看器

admin
2025年6月21日 22:35 本文热度 18

Windows事件日志

Windows 操作系统将与计算机的系统性能、应用程序和安全方面相关的每个事件记录在 C:\WINDOWS\system32\winevt 的日志中。

事件查看器从这些原始事件日志中读取信息,然后以可读格式呈现信息。

打开Windows事件查看器的方法:

1、运行输入eventvwr

2、Windows+X打开的超级菜单中选择事件查看器。

 3、桌面计算机图标右键选择【管理】,在计算机管理中打开【事件查看器】 

事件查看器打开后显示如下:

有三个默认事件日志:应用程序、系统和安全。 安全日志(只读的)。

注意:事件是跟注册表关联起来的,所以推荐以管理员权限运行,否则有些类别下的日志无法读取/写入/删除。

像平常我们开发的程序如果想更方便的查找错误,除了本地日志外,还可以将日志写入到Windows事件日志中的【应用程序和服务日志】类别下,可以方便我们快速查找问题。 

EventLog类

在C#中操作Windows事件日志主要使用EventLog类,EventLog类内部使用了ReadEventLogW/ReportEventW等win32 api函数。

.Net Framework中,直接使用System.Diagnostics.EventLog类即可,

.NET Core项目中,需要引用System.Diagnostics.EventLog

EventLog类提供了实例化版本的方法和静态方法两种,类似FileInfo和FIle类。

本文以EventLog类的静态方法进行演示。 

获取日志名字

//获取所有事件日志 var logs = EventLog.GetEventLogs();
 foreach (var item in logs) {     //输出事件日志的名字(显示名字[日志名字])     //日志名字是用于读取/写入时的名字     Console.WriteLine(item.LogDisplayName + $"[{item.Log}]"); }

运行输出如下

获取日志下的单个记录

这里我们以Visual Studio日志为例,输出Visual Studio日志下的所有记录。

static void Main(string[] args)  {      PrintLogClass();
      PrintLogEntry("Visual Studio");  }
  static void PrintLogEntry(string logName)  {      //获取所有事件日志      var logs = EventLog.GetEventLogs();
      foreach (var item in logs)      {          if(item.LogDisplayName == logName)          {              foreach (EventLogEntry entry in item.Entries)              {                  Console.WriteLine($"级别:{entry.EntryType}");                  Console.WriteLine($"创建时间:{entry.TimeGenerated}");                  Console.WriteLine($"来源:{entry.Source}");                  Console.WriteLine($"事件ID:{entry.InstanceId}");                  Console.WriteLine($"日志内容:{entry.Message}");                  Console.WriteLine();              }          }      }  }

运行结果如下:

创建日志

写入记录到系统日志下

这里以【应用程序】日志为例,操作如下:

//需要先注册一个来源,跟日志绑定if(!EventLog.SourceExists("MyApplicationLogSource")){    EventLog.CreateEventSource("MyApplicationLogSource""Application");}
EventLog.WriteEntry("MyApplicationLogSource""测试日志内容",EventLogEntryType.Warning,100010);

运行后到事件查看器查看写入的日志

写入记录到自定义日志类别下

//创建来源并跟日志(MyLog)绑定 if (!EventLog.SourceExists("MySource")) {     EventLog.CreateEventSource("MySource""MyLog"); }
 //写入记录到MyLog下 EventLog.WriteEntry("MySource""你可以指定日志内容"EventLogEntryType.Warning10010);

运行后,可以看到增加了一个MyLog日志,并增加了一条类型为警告的记录

清除日志下的所有记录

//获取所有事件日志 var logs = EventLog.GetEventLogs();
 foreach (var item in logs) {     if (item.LogDisplayName == logName)     {         //清除所有记录         item.Clear();         break;     } }

删除日志

//删除日志来源EventLog.DeleteEventSource("MySource");//删除日志EventLog.Delete("MyLog"); 

示例代码

附件:EventvwrMgmtDemo.zip


阅读原文:原文链接


该文章在 2025/6/23 14:18:30 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved