在程序中经常需要将指定的信息(包括异常信息和正常处理信息)写到日志中。在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事件日志时要注意,如果事件日志文件已满,可以在事件属性对话框(在事件右键菜单中选择“属性”菜单项会弹出该对话框)中增加日志文件的大小,或清空当前事件中的日志。事件属性对话框如下图所示。

使用EventLog类写Windows事件日志的更多相关文章

  1. .NET拾忆:EventLog(Windows事件日志监控)

    操作Windows日志:EventLog 1:事件日志名(logName):“事件查看器”中的每一项,如“应用程序”.“Internet Explorer”.“安全性”和“系统”都是日志(严格地说是日 ...

  2. .NET 操作 EventLog(Windows事件日志监控)(转载)

    操作Windows日志:EventLog 如果要在.NET Core控制台项目中使用EventLog(Windows事件日志监控),首先需要下载Nuget包: System.Diagnostics.E ...

  3. Syslog和Windows事件日志收集

    Syslog和Windows事件日志收集 EventLog Analyzer从分布式Windows设备收集事件日志,或从分布式Linux和UNIX设备.交换机和路由器(Cisco)收集syslog.事 ...

  4. 为什么要使用日志管理?syslog和Windows事件日志

    为什么要使用日志管理?syslog和Windows事件日志 日志管理 - 确保网络安全的先决条件 日志给予您有关网络活动的第一手信息.日志管理确保日志中隐藏的网络活动数据转换为有意义的可操作的安全信息 ...

  5. Python处理Windows事件日志(json)

    通过NXlog将Windows事件日志保存为json格式文件,然后在Python中使用json.loads()进行处理. NXlog在将Windows事件日志保存为json格式文件,文件中带入了BOM ...

  6. C#操作windows事件日志项

    /// <summary> /// 指定事件日志项的事件类型 /// </summary> public enum EventLogLevel { /// <summar ...

  7. Zabbix监控Windows事件日志

    1.zabbix_agentd.win文件修改: LogFile=c:\zabbix\zabbix_agentd.log Server=1.16.2.4 ServerActive=1.16.2.4 H ...

  8. 用python查看windows事件日志的方法(待后续研究)

    #coding=utf8 import copy import ctypes from ctypes import byref, POINTER, cast, c_uint64, c_ulong, c ...

  9. SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志

    1.IP地址配置不正确: 打开 Microsoft SQL Server 2005配置工具下的SQL Server Configuration Manager,选择MSSQLSERVER协议, 然后双 ...

随机推荐

  1. 《编写高质量代码-Web前端开发修改之道》笔记--第一章 从网站重构说起

    本章内容: 糟糕的页面实现,头疼的维护工作 Web标准--结构.样式和行为的分离 前端的现状 打造高品质的前端代码,提高代码的可维护性--精简.重用.有序 糟糕的页面实现,头疼的维护工作 工作中最大的 ...

  2. [DevExpress]设置RepositoryItemComboBox只可下拉选择不可编辑

    将TextEditStyle属性设置如下即可: 希望有所帮助!

  3. PHPStorm 2016.2 - 2016.3许可证服务器

    最快,最安全的选择,以激活您的PHPStorm 2016.2 - 2016.3,这是足够的激活服务器,软件将自动激活.该过程将不断更新,如果不工作评价写入,如果有,以激活没有列出的服务器也可以说. 通 ...

  4. Media Queries——媒体类型

    媒体类型(Media Type)在CSS2中是一个常见的属性,也是一个非常有用的属性,可以通过媒体类型对不同的设备指定不同的样式. 在CSS2中常碰到的就是all(全部).screen(屏幕).pri ...

  5. html 模板 swig 预编译插件 grunt-swig-precompile

    GitHub grunt-swig-precompile NPM grunt-swig-precompile 在书写前端静态页面的时候,每个页面总在书写很多重复的标签. 为了提高效率,结合 swig. ...

  6. GridView分页排序

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridviewPage.asp ...

  7. [python] 字符串引用

    %s str %d 整数 %f 浮点数 print('$%.03f' % 30.1777) >>>$30.178  #四舍五入 print( '%-5s %s %10s' % ('J ...

  8. spring接收参数

    public class LogonModel { private String UserName; private String Password; public String getUserNam ...

  9. IE10用video标签播放本地mp4文件失败的解决办法

    1. 首先用“格式工厂”将要播放的视频文件按照“AVC高质量与大小”转换为要求格式的mp4文件: 2. 设置IIS7.5,添加mp4的MIME类型,步骤如下: 1.打开IIS管理器(运行inetmgr ...

  10. 录制游戏视频——fraps

    http://pcedu.pconline.com.cn/341/3417224.html