EventLog 类 (System.Diagnostics) 您所在的位置:网站首页 未定义log EventLog 类 (System.Diagnostics)

EventLog 类 (System.Diagnostics)

2023-07-03 01:14| 来源: 网络整理| 查看: 265

EventLog 类 参考 定义 命名空间: System.Diagnostics 程序集:System.Diagnostics.EventLog.dll 程序集:System.dll

重要

一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。

提供与 Windows 事件日志的交互。

public ref class EventLog : System::ComponentModel::Component, System::ComponentModel::ISupportInitialize public class EventLog : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize type EventLog = class inherit Component interface ISupportInitialize Public Class EventLog Inherits Component Implements ISupportInitialize 继承 Object MarshalByRefObject Component EventLog 实现 ISupportInitialize 示例

以下示例创建事件源 MySource (如果尚不存在),并将条目写入事件日志 MyNewLog。

备注

从 Windows Vista 开始,必须以管理员身份运行此应用程序。

#using using namespace System; using namespace System::Diagnostics; using namespace System::Threading; int main() { // Create the source, if it does not already exist. if ( !EventLog::SourceExists( "MySource" ) ) { //An event log source should not be created and immediately used. //There is a latency time to enable the source, it should be created //prior to executing the application that uses the source. //Execute this sample a second time to use the new source. EventLog::CreateEventSource( "MySource", "MyNewLog" ); Console::WriteLine( "CreatingEventSource" ); // The source is created. Exit the application to allow it to be registered. return 0; } // Create an EventLog instance and assign its source. EventLog^ myLog = gcnew EventLog; myLog->Source = "MySource"; // Write an informational entry to the event log. myLog->WriteEntry( "Writing to event log." ); } using System; using System.Diagnostics; using System.Threading; class MySample{ public static void Main(){ // Create the source, if it does not already exist. if(!EventLog.SourceExists("MySource")) { //An event log source should not be created and immediately used. //There is a latency time to enable the source, it should be created //prior to executing the application that uses the source. //Execute this sample a second time to use the new source. EventLog.CreateEventSource("MySource", "MyNewLog"); Console.WriteLine("CreatedEventSource"); Console.WriteLine("Exiting, execute the application a second time to use the source."); // The source is created. Exit the application to allow it to be registered. return; } // Create an EventLog instance and assign its source. EventLog myLog = new EventLog(); myLog.Source = "MySource"; // Write an informational entry to the event log. myLog.WriteEntry("Writing to event log."); } } Option Explicit Option Strict Imports System.Diagnostics Imports System.Threading Class MySample Public Shared Sub Main() If Not EventLog.SourceExists("MySource") Then ' Create the source, if it does not already exist. ' An event log source should not be created and immediately used. ' There is a latency time to enable the source, it should be created ' prior to executing the application that uses the source. ' Execute this sample a second time to use the new source. EventLog.CreateEventSource("MySource", "MyNewLog") Console.WriteLine("CreatingEventSource") 'The source is created. Exit the application to allow it to be registered. Return End If ' Create an EventLog instance and assign its source. Dim myLog As New EventLog() myLog.Source = "MySource" ' Write an informational entry to the event log. myLog.WriteEntry("Writing to event log.") End Sub End Class 注解

EventLog允许访问或自定义Windows事件日志,这些日志记录有关重要软件或硬件事件的信息。 使用 EventLog,可以从现有日志读取、将条目写入日志、创建或删除事件源、删除日志以及响应日志条目。 还可以在创建事件源时创建新日志。

重要

此类型实现 IDisposable 接口。 在使用完类型后,您应直接或间接释放类型。 若要直接释放类型,请在 try/catch 块中调用其 Dispose 方法。 若要间接释放类型,请使用 using(在 C# 中)或 Using(在 Visual Basic 中)等语言构造。 有关详细信息,请参阅 IDisposable 接口主题中的“使用实现 IDisposable 的对象”一节。

除了提供对单个事件日志及其条目的访问权限外,该 EventLog 类还允许你访问所有事件日志的集合。 可以使用 static 删除日志的成员 EventLog 、获取日志列表、创建或删除源,或确定计算机是否已包含特定源。

有三个默认事件日志:应用程序、系统和安全性。 安全日志是只读的。 安装的其他应用程序和服务(如 Active Directory)可能还有其他事件日志。

使用 EventLog 类时,存在安全注意事项。 EventLogEventLogPermission需要.NET Framework 2.0 及更高版本中的特定操作的权限,或者对 .NET Framework 1.0 和 1.1 完全信任。 建议 EventLogPermission 不要授予部分受信任的代码。 不应将任何事件日志对象(包括 EventLogEntryCollection 和 EventLogEntry 对象)传递给不太受信任的代码。 例如,创建对象 EventLog 、编写条目,然后将对象传递给 EventLog 部分受信任的代码可能会创建安全问题,因为读取和写入事件日志的功能允许代码执行操作,例如在另一个应用程序的名称中发出事件日志消息。

从 Windows Vista 开始,用户帐户控制 (UAC) 确定用户的凭据。 如果您是内置的 Administrators 组的成员,将为您分配两个运行时访问令牌:一个标准用户访问令牌和一个管理员访问令牌。 默认情况下,您拥有标准用户角色。 若要运行访问安全日志的代码,必须先将凭据从标准用户提升到管理员。 如果使用的是鼠标,可以打开应用程序 (的快捷菜单来启动应用程序,右键单击应用程序图标) ,并指示要以管理员身份运行。

可用于EventLog创建自定义事件日志,可以通过服务器的事件查看器进行查看。 使用此方法RegisterDisplayName在事件查看器中显示事件日志的本地化名称。 使用此方法 ModifyOverflowPolicy 在事件日志达到其最大日志大小时配置事件日志的行为。

若要从事件日志中读取,请为事件日志指定日志名称 (属性) Log 和服务器计算机名称 (MachineName 属性。 如果未指定服务器计算机名称,则假定本地计算机“.”。 无需指定事件源 (属性) Source ,因为只有写入日志时才需要源。 该 Entries 属性会自动填充事件日志的条目列表。

若要写入事件日志,请指定或创建事件源 (Source 属性) 。 计算机上必须具有管理凭据才能创建新的事件源。 事件源将应用程序注册到事件日志作为条目的有效源。 一次只能使用事件源写入一个日志。 该 Source 属性可以是任何随机字符串,但名称必须与计算机上的其他源不同。 事件源通常是应用程序的名称或其他标识字符串。 尝试创建重复 Source 值会引发异常。 但是,单个事件日志可以与多个源相关联。

如果与 EventLog 实例关联的事件日志的事件源不存在,则会创建新的事件源。 若要在 Windows Vista 及更高版本或 Windows Server 2003 中创建事件源,必须具有管理凭据。

此要求是因为必须搜索所有事件日志(包括安全日志)以确定事件源是否是唯一的。 从 Windows Vista 开始,用户无权访问安全日志;因此会引发 aSecurityException。

重要

创建或删除事件源需要使用命名互斥体同步基础代码。 如果高特权应用程序锁定命名互斥体,则尝试创建或删除事件源会导致应用程序在释放锁之前停止响应。 为了帮助防止此问题,请从不向不受信任的代码授予 UnmanagedCode 权限。 此外, UnmanagedCode 权限可能允许绕过其他权限,并且只应授予高度受信任的代码。

应用程序和服务应写入应用程序日志或自定义日志。 设备驱动程序应写入系统日志。 如果未显式设置 Log 属性,事件日志默认为应用程序日志。

备注

无需保护应用程序以任何已注册源的形式写入。 如果应用程序获得 Write 权限,它可以为计算机上注册的任何有效源写入事件。

WriteEvent使用和WriteEntry方法将事件写入事件日志。 必须指定事件源才能写入事件;必须先创建和配置事件源,然后才能使用源编写第一个条目。

在安装应用程序期间创建新的事件源。 这样,操作系统就可以刷新其已注册事件源及其配置的列表。 如果操作系统未刷新其事件源列表,并且尝试使用新源写入事件,则写入操作将失败。 可以使用对象或CreateEventSource方法配置新源EventLogInstaller。 计算机上必须具有管理凭据才能创建新的事件源。

每个源一次只能写入一个事件日志;但是,应用程序可以使用多个源写入多个事件日志。 例如,应用程序可能需要为不同的事件日志或不同的资源文件配置多个源。 若要更改现有源的配置详细信息,必须删除源,然后使用新配置创建该源。 如果其他应用程序或组件使用现有源,请使用更新的配置创建新源,而不是删除现有源。

可以将事件源注册到事件类别和消息字符串的本地化资源。 应用程序可以使用资源标识符而不是指定实际字符串值来编写事件日志条目。 EventLogInstaller有关使用资源文件配置源的详细信息,请参阅这些和EventSourceCreationData类。

如果应用程序将字符串值直接写入事件日志,则无需为源设置资源文件属性。 必须配置源以编写本地化条目或编写直接字符串。 如果应用程序使用资源标识符和字符串值写入条目,则必须注册两个单独的源。 例如,使用资源文件配置一个源,然后使用该方法中的 WriteEvent 源将资源标识符用于将条目写入事件日志。 然后创建一个不带资源文件的其他源,并在方法中使用 WriteEntry 该源直接将字符串写入到使用该源的事件日志。

编写事件时,必须至少指定消息字符串或消息字符串的资源标识符。 其他事件属性是可选的。 可选事件设置的示例包括:

可以设置EventLogEntryType指定事件查看器为条目显示的图标。

如果应用程序使用类别筛选事件,则可以为事件指定类别标识符。

如果要将其他信息与给定事件相关联,可以将二进制数据附加到事件条目。

重要

事件日志记录使用磁盘空间、处理器时间和其他系统资源。 必须仅记录基本信息。 建议将事件日志调用放置在错误路径中,而不是在主代码路径中,因此它们不会对性能产生不利影响。

有关实例 EventLog的初始属性值列表,请参阅 EventLog 构造函数。

构造函数 EventLog()

初始化 EventLog 类的新实例。 不将该实例与任何日志关联。

EventLog(String)

初始化 EventLog 类的新实例。 将该实例与本地计算机上的日志关联。

EventLog(String, String)

初始化 EventLog 类的新实例。 将该实例与指定计算机上的日志关联。

EventLog(String, String, String)

初始化 EventLog 类的新实例。 将实例与指定的计算机上的日志关联,并为 EventLog 实例创建或分配指定的源。

属性 CanRaiseEvents

获取一个指示组件是否可以引发事件的值。

(继承自 Component) Container

获取包含 IContainer 的 Component。

(继承自 Component) DesignMode

获取一个值,用以指示 Component 当前是否处于设计模式。

(继承自 Component) EnableRaisingEvents

获取或设置一个值,用以指示 EventLog 是否接收 EntryWritten 事件通知。

Entries

获取事件日志的内容。

Events

获取附加到此 Component 的事件处理程序的列表。

(继承自 Component) Log

获取或设置读取或写入的日志名称。

LogDisplayName

获取事件日志的友好名称。

MachineName

获取或设置在其上读取或写入事件的计算机的名称。

MaximumKilobytes

获取或设置最大事件日志大小(以 KB 为单位)。

MinimumRetentionDays

获取要在事件日志中保留项的天数。

OverflowAction

获取已配置的行为,以便在事件日志达到其最大文件大小时存储新项。

Site

获取或设置 Component 的 ISite。

(继承自 Component) Source

获取或设置在写入事件日志时要注册和使用的源名称。

SynchronizingObject

获取或设置用于封送事件处理程序调用的对象,该调用在有 EventLog 项写入事件时发出。

方法 BeginInit()

开始初始化用于窗体或由其他组件使用的 EventLog。 此初始化在运行时发生。

Clear()

从事件日志中移除所有项。

Close()

关闭事件日志并释放读写句柄。

CreateEventSource(EventSourceCreationData)

通过使用为该事件源和对应的事件日志指定的配置属性,建立一个写入本地化事件消息的有效事件源。

CreateEventSource(String, String)

建立指定的源名称作为向本地计算机上的日志中写入日志项的有效事件源。 此方法还可在本地计算机上创建一个新的自定义日志。

CreateEventSource(String, String, String) 已过时。 已过时。 已过时。 已过时。

建立指定的源名称作为向指定计算机上的日志中写入项的有效事件源。 此方法还可用于在指定计算机上创建一个新的自定义日志。

CreateObjRef(Type)

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

(继承自 MarshalByRefObject) Delete(String)

从本地计算机上移除事件日志。

Delete(String, String)

从指定计算机上移除事件日志。

DeleteEventSource(String)

从本地计算机的事件日志中移除事件源注册。

DeleteEventSource(String, String)

从指定的计算机上移除应用程序的事件源注册。

Dispose()

释放由 Component 使用的所有资源。

(继承自 Component) Dispose(Boolean)

释放由 EventLog 占用的非托管资源,还可以另外再释放托管资源。

EndInit()

结束用于窗体或由其他组件使用的 EventLog 的初始化。 此初始化在运行时发生。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object) Exists(String)

确定该日志是否存在于本地计算机上。

Exists(String, String)

确定该日志是否存在于指定计算机上。

GetEventLogs()

在本地计算机上搜索所有的事件日志并创建一个包含该列表的 EventLog 对象数组。

GetEventLogs(String)

在给定计算机上搜索所有事件日志并创建一个包含该列表的 EventLog 对象数组。

GetHashCode()

作为默认哈希函数。

(继承自 Object) GetLifetimeService() 已过时。

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject) GetService(Type)

返回一个对象,该对象表示由 Component 或它的 Container 提供的服务。

(继承自 Component) GetType()

获取当前实例的 Type。

(继承自 Object) InitializeLifetimeService() 已过时。

获取生存期服务对象来控制此实例的生存期策略。

(继承自 MarshalByRefObject) LogNameFromSourceName(String, String)

获取指定的源注册到的日志的名称。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object) MemberwiseClone(Boolean)

创建当前 MarshalByRefObject 对象的浅表副本。

(继承自 MarshalByRefObject) ModifyOverflowPolicy(OverflowAction, Int32)

更改已配置的行为,以便在事件日志达到其最大文件大小时写入新项。

RegisterDisplayName(String, Int64)

指定该事件日志的本地化名称,它显示在服务器事件查看器中。

SourceExists(String)

确定事件源是否已在本地计算机上注册。

SourceExists(String, String)

确定事件源是否已在指定的计算机上注册。

ToString()

返回包含 Component 的名称的 String(如果有)。 不应重写此方法。

(继承自 Component) WriteEntry(String)

将信息类型项与给定的消息文本一起写入事件日志。

WriteEntry(String, EventLogEntryType)

将错误、警告、信息、成功审核或失败审核项与给定的消息文本一起写入事件日志。

WriteEntry(String, EventLogEntryType, Int32)

将一个具有给定消息文本和应用程序定义的事件标识符的项写入事件日志。

WriteEntry(String, EventLogEntryType, Int32, Int16)

将一个具有给定消息文本、应用程序定义的事件标识符和应用程序定义的类别的项写入事件日志。

WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[])

将一个具有给定消息文本、应用程序定义的事件标识符和应用程序定义的类别的项写入事件日志,并向消息追加二进制数据。

WriteEntry(String, String)

使用指定的注册事件源将信息类型项与给定的消息文本一起写入事件日志。

WriteEntry(String, String, EventLogEntryType)

使用指定的注册事件源,将错误、警告、信息、成功审核或失败审核项与给定的消息文本一起写入事件日志。

WriteEntry(String, String, EventLogEntryType, Int32)

使用指定的注册事件源,将一个具有给定消息文本和应用程序定义的事件标识符的项写入事件日志。

WriteEntry(String, String, EventLogEntryType, Int32, Int16)

通过使用指定的注册事件源,将一个具有给定消息文本、应用程序定义的事件标识符和应用程序定义的类别的项写入事件日志。 事件查看器可使用 category 筛选日志中的事件。

WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[])

(使用指定的注册事件源)将一个包含给定消息文本、应用程序定义的事件标识符和应用程序定义的类别的项写入事件日志,并向消息追加二进制数据。

WriteEvent(EventInstance, Byte[], Object[])

写入包含给定的事件数据、消息替换字符串和关联的二进制数据的事件日志项。

WriteEvent(EventInstance, Object[])

向事件日志写入本地化项。

WriteEvent(String, EventInstance, Byte[], Object[])

使用指定的已注册事件源,写入包含给定的事件数据、消息替换字符串和关联的二进制数据的事件日志项。

WriteEvent(String, EventInstance, Object[])

使用指定的已注册事件源写入包含给定事件数据和消息替换字符串的事件日志项。

事件 Disposed

在通过调用 Dispose() 方法释放组件时发生。

(继承自 Component) EntryWritten

向本地计算机上的事件日志写入项时发生。

适用于 另请参阅 EventLogInstaller EventLogEntry EntryWrittenEventArgs ServiceBase


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有