HOW TO:使用 C# .NET 写入事件日志

文章翻译 文章翻译
文章编号: 307024 - 查看本文应用于的产品
本文的发布号曾为 CHS307024
展开全部 | 关闭全部

本文内容

概要

本文演示如何使用 Microsoft .NET 框架在操作系统的事件日志中添加您自己的条目。

要求

下表概括了推荐使用的硬件、软件、网络架构以及所需的 Service Pack:
  • Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server 或 Windows NT 4.0 Server
  • Microsoft Visual Studio .NET

写入事件日志

事件日志给应用程序提供了一种标准、集中的方法来记录重要的软件和硬件事件。 Windows 提供了一个用于查看日志的标准用户界面,即事件查看器。 使用公共语言的运行库 EventLog 组件,您可以方便地连接到本地和远程计算机上的现有事件日志,并在这些日志中填写条目。 您也可以从已有的日志读取条目并创建您自己的自定义事件日志。 使用最简单的方式,只需几步就可创建一个示例应用程序并写入事件日志中:
  1. 打开 Visual Studio .NET
  2. 在 Microsoft C# 中新建控制台应用程序。Visual C# .NET 为您创建一个公用类,以及一个空的 Main() 方法。
  3. 请确保项目至少引用了 System.dll
  4. System System.Diagnostics 名称空间使用 using 指令,这样,在后面的代码中就不需要限定这些名称空间中的声明了。这些语句必须放在所有其他声明之前。
    using System;
    using System.Diagnostics;
  5. 若要写入事件日志,需要提供以下几条信息: 您的消息、要写入的日志名(如果不存在,就会创建一个名称)以及一个表示事件源的字符串。 某种源只能在一个事件日志中记录,因此,如果要在多个日志中写入消息,必须定义多个源。
    string sSource;
    string sLog;
    string sEvent;
    
    sSource = "dotNET Sample App";
    sLog = "Application";
    sEvent = "Sample Event";
  6. 有了所有这些信息后,第一步是使用 EventLog 类的两个静态方法先检查您的事件源是否存在,如果不存在,则创建与特定事件日志关联的事件源。 如果指定的日志名不存在,则在写入第一个条目时自动创建该名称。 如果没有为 CreateEventSource 方法提供日志名,则默认指定为应用程序日志。
    if (!EventLog.SourceExists(sSource))
    	EventLog.CreateEventSource(sSource,sLog);
  7. 若要将消息写入事件日志,需使用静态方法 EventLog.WriteEntry(有多个不同的重载版本)。 在下面的代码中给出了最简单的方法,只需提供源字符串和您的消息,而比较复杂的方法还需提供事件 ID 和事件类型。
    EventLog.WriteEntry(sSource,sEvent);
    EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Warning,  234);
  8. 保存并运行代码,然后在事件查看器中检查应用程序日志,以查看您的新事件。

完整代码列表

using System;
using System.Diagnostics;

namespace WriteToAnEventLog_csharp
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Class1
	{
		static void Main(string[] args)
		{
			string sSource;
			string sLog;
			string sEvent;

			sSource = "dotNET Sample App";
			sLog = "Application";
			sEvent = "Sample Event";

			if (!EventLog.SourceExists(sSource))
				EventLog.CreateEventSource(sSource,sLog);

			EventLog.WriteEntry(sSource,sEvent);
			EventLog.WriteEntry(sSource, sEvent,
				EventLogEntryType.Warning, 234);
		}
	}
}
<BR/>
<BR/>



属性

文章编号: 307024 - 最后修改: 2001年11月5日 - 修订: 1.0
这篇文章中的信息适用于:
  • Microsoft Visual C# .NET 2002 标准版
关键字:?
kbhowto kbhowtomaster KB307024
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com