当前位置: 代码网 > it编程>编程语言>Asp.net > C#查看/写入日志到Windows事件查看器的操作方法

C#查看/写入日志到Windows事件查看器的操作方法

2024年09月04日 Asp.net 我要评论
windows事件日志windows 操作系统将与计算机的系统性能、应用程序和安全方面相关的每个事件记录在 c:\windows\system32\winevt 的日志中。事件查看器从这些原始事件日志

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.warning, 10010);   

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

清除日志下的所有记录

  //获取所有事件日志
  var logs = eventlog.geteventlogs();
 
  foreach (var item in logs)
  {
      if (item.logdisplayname == logname)
      {
          //清除所有记录
          item.clear();
          break;
      }
  }

删除日志

 //删除日志来源
 eventlog.deleteeventsource("mysource");
 //删除日志
 eventlog.delete("mylog");

以上就是c#查看/写入日志到windows事件查看器的操作方法的详细内容,更多关于c#查看/写入日志到windows的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com