EventLog.WriteEntry 方法

定义

将项写入事件日志。

重载

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

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

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

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

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

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

WriteEntry(String, String, EventLogEntryType, Int32)

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

WriteEntry(String, EventLogEntryType, Int32, Int16)

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

WriteEntry(String, EventLogEntryType)

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

WriteEntry(String, EventLogEntryType, Int32)

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

WriteEntry(String, String)

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

WriteEntry(String)

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

WriteEntry(String, String, EventLogEntryType)

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

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

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 static void WriteEntry(System::String ^ source, System::String ^ message, System::Diagnostics::EventLogEntryType type, int eventID, short category, cli::array <System::Byte> ^ rawData);
public static void WriteEntry (string source, string message, System.Diagnostics.EventLogEntryType type, int eventID, short category, byte[] rawData);
static member WriteEntry : string * string * System.Diagnostics.EventLogEntryType * int * int16 * byte[] -> unit
Public Shared Sub WriteEntry (source As String, message As String, type As EventLogEntryType, eventID As Integer, category As Short, rawData As Byte())

参数

source
String

应用程序在指定计算机上注册时所采用的源。

message
String

要写入事件日志的字符串。

eventID
Int32

事件的应用程序特定标识符。

category
Int16

与消息关联的应用程序特定子类别。

rawData
Byte[]

包含与此项关联的二进制数据的字节数组。

例外

source 值是空字符串 ("")。

- 或 -

source 值为 null

- 或 -

eventID 小于零或大于 UInt16.MaxValue

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

//Create a byte array for binary data to associate with the entry.
array<Byte>^myByte = gcnew array<Byte>(10);
//Populate the byte array with simulated data.
for ( int i = 0; i < 10; i++ )
{
   myByte[ i ] = (Byte)(i % 2);
}
//Write an entry to the event log that includes associated binary data.
Console::WriteLine( "Write from second source " );
EventLog::WriteEntry( "SecondSource", "Writing warning to event log.",
   EventLogEntryType::Error, myEventID, myCategory, myByte );
//Create a byte array for binary data to associate with the entry.
byte[] myByte = new byte[10];
//Populate the byte array with simulated data.
for (int i = 0; i < 10; i++)
{
    myByte[i] = (byte)(i % 2);
}
// Write an entry to the event log that includes associated binary data.
Console.WriteLine("Write from second source ");
EventLog.WriteEntry("SecondSource", "Writing warning to event log.",
                     EventLogEntryType.Error, myEventID, myCategory, myByte);
' Create a byte array for binary data to associate with the entry.
Dim myByte(9) As Byte
Dim i As Integer
' Populate the byte array with simulated data.
For i = 0 To 9
    myByte(i) = CByte(i Mod 2)
Next i
' Write an entry to the event log that includes associated binary data.
Console.WriteLine("Write from second source ")
EventLog.WriteEntry("SecondSource", "Writing warning to event log.", _
                     EventLogEntryType.Error, myEventID, myCategory, myByte)

注解

使用此方法,使用已注册为相应日志的事件源的源,将应用程序定义的特定于事件的数据写入事件日志。 事件查看器不解释此数据;它仅以十六进制和文本格式的组合显示原始数据。 请谨慎使用特定于事件的数据;仅当确定它有用时,才包含它。 还可以使用特定于事件的数据来存储应用程序可以独立于事件查看器处理的信息。 例如,可以专门为事件编写查看器,或者编写扫描日志文件并创建包含事件特定数据信息的报表的程序。

除了二进制数据之外,还可以指定应用程序定义的类别和应用程序定义的事件标识符。 事件查看器使用 类别来筛选事件源写入的事件。 事件查看器可以将类别显示为数值,也可以使用类别作为资源标识符来显示本地化的类别字符串。

注意

参数 category 应为正值。 负类别值在事件查看器中显示为互补正数。 例如,-10 将显示为 65,526,-1 显示为 65,535。

若要在事件查看器中显示本地化类别字符串,必须使用配置了类别资源文件的事件源,并将 设置为category类别资源文件中的资源标识符。 如果事件源没有配置的类别资源文件,或者指定的 category 未为类别资源文件中的字符串编制索引,则事件查看器显示该条目的数字类别值。 使用 EventLogInstallerEventSourceCreationData 类配置类别资源文件以及资源文件中的类别字符串数。

事件标识符与事件源一起唯一标识事件。 每个应用程序都可以定义其自己的编号事件以及它们映射到的说明字符串。 事件查看器显示这些字符串值,以帮助用户了解出了问题并建议要执行的操作。

最后,可以为要写入事件日志的事件指定 EventLogEntryTypetype由日志事件查看器“类型”列中的图标和文本指示。 此参数指示事件类型是错误、警告、信息、成功审核还是失败审核。

在使用源写入第一个条目之前,必须创建并配置事件源。 在安装应用程序期间Create新的事件源。 这允许操作系统有时间刷新其已注册事件源及其配置的列表。 如果操作系统尚未刷新其事件源列表,并且您尝试使用新源编写事件,则写入操作将失败。 可以使用 或使用 CreateEventSource 方法配置新源EventLogInstaller。 必须在计算机上具有管理权限才能创建新的事件源。

必须为编写本地化条目或写入直接字符串配置源。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法通过本地化的消息资源文件写入事件。

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

注意

message如果 参数包含 NUL 字符,则事件日志中的消息会在 NUL 字符处终止。

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

另请参阅

适用于

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

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 static void WriteEntry(System::String ^ source, System::String ^ message, System::Diagnostics::EventLogEntryType type, int eventID, short category);
public static void WriteEntry (string source, string message, System.Diagnostics.EventLogEntryType type, int eventID, short category);
static member WriteEntry : string * string * System.Diagnostics.EventLogEntryType * int * int16 -> unit
Public Shared Sub WriteEntry (source As String, message As String, type As EventLogEntryType, eventID As Integer, category As Short)

参数

source
String

应用程序在指定计算机上注册时所采用的源。

message
String

要写入事件日志的字符串。

eventID
Int32

事件的应用程序特定标识符。

category
Int16

与消息关联的应用程序特定子类别。

例外

source 值是空字符串 ("")。

- 或 -

source 值为 null

- 或 -

eventID 小于零或大于 UInt16.MaxValue

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

int myEventID = 20;
short myCategory = 10;

// Write an informational entry to the event log.
Console::WriteLine( "Write from first source " );
EventLog::WriteEntry( "FirstSource", "Writing warning to event log.",
   EventLogEntryType::Information, myEventID, myCategory );
int myEventID = 20;
short myCategory = 10;
// Write an informational entry to the event log.
Console.WriteLine("Write from first source ");
EventLog.WriteEntry("FirstSource", "Writing warning to event log.",
                     EventLogEntryType.Information, myEventID, myCategory);
Dim myEventID As Integer = 10
Dim myCategory As Short = 20
' Write an informational entry to the event log.
Console.WriteLine("Write from first source ")
EventLog.WriteEntry("FirstSource", "Writing warning to event log.", _
                           EventLogEntryType.Information, myEventID, myCategory)

注解

使用此方法,使用已注册为相应日志的事件源的源,将应用程序定义的 category 条目写入事件日志。 事件查看器使用 类别来筛选事件源写入的事件。 事件查看器可以将类别显示为数值,也可以使用类别作为资源标识符来显示本地化的类别字符串。

注意

参数 category 应为正值。 负类别值在事件查看器中显示为互补正数。 例如,-10 显示为 65,526,-1 显示为 65,535。

若要在事件查看器中显示本地化类别字符串,必须使用配置了类别资源文件的事件源,并将 设置为category类别资源文件中的资源标识符。 如果事件源没有配置的类别资源文件,或者指定的 category 未为类别资源文件中的字符串编制索引,则事件查看器显示该条目的数字类别值。 使用 EventLogInstallerEventSourceCreationData 类配置类别资源文件以及资源文件中的类别字符串数。

除了 类别之外,还可以为要写入事件日志的事件指定事件标识符。 事件标识符与事件源一起唯一标识事件。 每个应用程序都可以定义其自己的编号事件以及它们映射到的说明字符串。 事件查看器显示这些字符串值,以帮助用户了解出了问题并建议要执行的操作。

最后,可以为要写入事件日志的事件指定 EventLogEntryTypetype由日志事件查看器“类型”列中的图标和文本指示。 此参数指示事件类型是错误、警告、信息、成功审核还是失败审核。

在使用源写入第一个条目之前,必须创建并配置事件源。 在安装应用程序期间Create新的事件源。 这允许操作系统有时间刷新其已注册事件源及其配置的列表。 如果操作系统尚未刷新其事件源列表,并且您尝试使用新源编写事件,则写入操作将失败。 可以使用 或使用 CreateEventSource 方法配置新源EventLogInstaller。 必须在计算机上具有管理权限才能创建新的事件源。

必须为编写本地化条目或写入直接字符串配置源。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法通过本地化的消息资源文件写入事件。

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

注意

message如果 参数包含 NUL 字符,则事件日志中的消息会在 NUL 字符处终止。

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

另请参阅

适用于

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

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 void WriteEntry(System::String ^ message, System::Diagnostics::EventLogEntryType type, int eventID, short category, cli::array <System::Byte> ^ rawData);
public void WriteEntry (string message, System.Diagnostics.EventLogEntryType type, int eventID, short category, byte[] rawData);
member this.WriteEntry : string * System.Diagnostics.EventLogEntryType * int * int16 * byte[] -> unit
Public Sub WriteEntry (message As String, type As EventLogEntryType, eventID As Integer, category As Short, rawData As Byte())

参数

message
String

要写入事件日志的字符串。

eventID
Int32

事件的应用程序特定标识符。

category
Int16

与消息关联的应用程序特定子类别。

rawData
Byte[]

包含与此项关联的二进制数据的字节数组。

例外

SourceEventLog 属性尚未设置。

- 或 -

该方法尝试注册新的事件源,但 MachineName 中的计算机名称无效。

- 或 -

已为其他事件日志注册了该源。

- 或 -

eventID 小于零或大于 UInt16.MaxValue

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

// Create the source, if it does not already exist.
String^ myLogName = "myNewLog";
if (  !EventLog::SourceExists( "MySource" ) )
{
   EventLog::CreateEventSource( "MySource", myLogName );
   Console::WriteLine( "Creating EventSource" );
}
else
   myLogName = EventLog::LogNameFromSourceName( "MySource", "." );

// Create an EventLog and assign source.
EventLog^ myEventLog = gcnew EventLog;
myEventLog->Source = "MySource";
myEventLog->Log = myLogName;

// Set the 'description' for the event.
String^ myMessage = "This is my event.";
EventLogEntryType myEventLogEntryType = EventLogEntryType::Warning;
int myApplicatinEventId = 1100;
short myApplicatinCategoryId = 1;

// Set the 'data' for the event.
array<Byte>^ myRawData = gcnew array<Byte>(4);
for ( int i = 0; i < 4; i++ )
{
   myRawData[ i ] = 1;
}
Console::WriteLine( "Writing to EventLog.. " );
myEventLog->WriteEntry( myMessage, myEventLogEntryType, myApplicatinEventId, myApplicatinCategoryId, myRawData );
// Create the source, if it does not already exist.
string myLogName = "myNewLog";
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", myLogName);
   Console.WriteLine("Created EventSource");
   Console.WriteLine("Exiting, execute the application a second time to use the source.");
   return;
}
else
   {
       myLogName = EventLog.LogNameFromSourceName("MySource",".");
   }
   // Create an EventLog and assign source.
   EventLog myEventLog = new EventLog();
myEventLog.Source = "MySource";
myEventLog.Log = myLogName;

// Set the 'description' for the event.
string myMessage = "This is my event.";
EventLogEntryType myEventLogEntryType = EventLogEntryType.Warning;
int myApplicatinEventId = 1100;
short myApplicatinCategoryId = 1;

// Set the 'data' for the event.
byte[] myRawData = new byte[4];
for(int i=0;i<4;i++)
{
   myRawData[i]=1;
}
// Write the entry in the event log.
Console.WriteLine("Writing to EventLog.. ");
myEventLog.WriteEntry(myMessage,myEventLogEntryType,
   myApplicatinEventId, myApplicatinCategoryId, myRawData);
' Create the source, if it does not already exist.
dim myLogName as string = "myNewLog"
If Not EventLog.SourceExists("MySource") Then
   EventLog.CreateEventSource("MySource", myLogName)
   Console.WriteLine("Creating EventSource")
else
   myLogName = EventLog.LogNameFromSourceName("MySource",".")
End If

' Create an EventLog and assign source.
Dim myEventLog As New EventLog()
myEventLog.Source = "MySource"
myEventLog.Log = myLogName

' Set the 'description' for the event.
Dim myMessage As String = "This is my event."
Dim myEventLogEntryType As EventLogEntryType = EventLogEntryType.Warning
Dim myApplicatinEventId As Integer = 1100
Dim myApplicatinCategoryId As Short = 1

' Set the 'data' for the event.
Dim myRawData(3) As Byte
Dim i As Integer
For i = 0 To 3
   myRawData(i) = 1
Next i
' Write the entry in the event log.
Console.WriteLine("Writing to EventLog.. ")
myEventLog.WriteEntry(myMessage, myEventLogEntryType, myApplicatinEventId, _
                     myApplicatinCategoryId, myRawData)

注解

使用此重载将应用程序定义的特定于事件的数据写入事件日志。 事件查看器不解释此数据;它仅以十六进制和文本格式的组合显示原始数据。 请谨慎使用特定于事件的数据,仅当确定对调试问题的人有用时,才包括它。 还可以使用特定于事件的数据来存储应用程序可以独立于事件查看器处理的信息。 例如,可以专门为事件编写查看器,或者编写扫描日志文件并创建包含事件特定数据信息的报表的程序。

除了二进制数据之外,还可以指定应用程序定义的类别和应用程序定义的事件标识符。 事件查看器使用 类别来筛选事件源写入的事件。 事件查看器可以将类别显示为数值,也可以使用类别作为资源标识符来显示本地化的类别字符串。

注意

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

注意

参数 category 应为正值。 负类别值在事件查看器中显示为互补正数。 例如,-10 显示为 65,526,-1 显示为 65,535。

若要在事件查看器中显示本地化类别字符串,必须使用配置了类别资源文件的事件源,并将 设置为category类别资源文件中的资源标识符。 如果事件源没有配置的类别资源文件,或者指定的 category 未为类别资源文件中的字符串编制索引,则事件查看器显示该条目的数字类别值。 使用 EventLogInstallerEventSourceCreationData 类配置类别资源文件以及资源文件中的类别字符串数。

事件标识符与事件源一起唯一标识事件。 每个应用程序都可以定义其自己的编号事件以及它们映射到的说明字符串。 事件查看器显示这些字符串值,以帮助用户了解出了问题并建议要执行的操作。

最后,可以为要写入事件日志的事件指定 EventLogEntryTypetype由日志事件查看器“类型”列中的图标和文本指示。 此参数指示事件类型是错误、警告、信息、成功审核还是失败审核。

必须先在组件上EventLog设置 属性,Source然后才能将条目写入日志。 在使用源写入第一个条目之前,必须创建并配置事件源。

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

如果此EventLog实例的 属性中指定的Source源未在组件写入的计算机上注册,WriteEntry则调用 CreateEventSource 并注册源。

注意

如果在调用 CreateEventSourceWriteEntry之前未为 EventLog 实例指定 MachineName ,则本地计算机 (”。假定 ) 。

如果系统需要通过调用 WriteEntry 来注册 Source ,并且Log尚未在EventLog实例上设置 属性,则日志默认为应用程序日志。

注意

上面列出的许多异常是由注册 Source过程中引发的错误生成的。

必须为编写本地化条目或写入直接字符串配置源。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法通过本地化的消息资源文件写入事件。

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

注意

如果将条目写入远程计算机,则如果远程计算机未运行.NET Framework,则消息 (文本字符串) 的值可能不是预期值。

注意

message如果 参数包含 NUL 字符,则事件日志中的消息会在 NUL 字符处终止。

另请参阅

适用于

WriteEntry(String, String, EventLogEntryType, Int32)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 static void WriteEntry(System::String ^ source, System::String ^ message, System::Diagnostics::EventLogEntryType type, int eventID);
public static void WriteEntry (string source, string message, System.Diagnostics.EventLogEntryType type, int eventID);
static member WriteEntry : string * string * System.Diagnostics.EventLogEntryType * int -> unit
Public Shared Sub WriteEntry (source As String, message As String, type As EventLogEntryType, eventID As Integer)

参数

source
String

应用程序在指定计算机上注册时所采用的源。

message
String

要写入事件日志的字符串。

eventID
Int32

事件的应用程序特定标识符。

例外

source 值是空字符串 ("")。

- 或 -

source 值为 null

- 或 -

eventID 小于零或大于 UInt16.MaxValue

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

// Create the source, if it does not already exist.
if (  !EventLog::SourceExists( "MySource" ) )
{
   EventLog::CreateEventSource( "MySource", "myNewLog" );
   Console::WriteLine( "Creating EventSource" );
}

// Set the 'description' for the event.
String^ myMessage = "This is my event.";
EventLogEntryType myEventLogEntryType = EventLogEntryType::Warning;
int myApplicationEventId = 100;

// Write the entry in the event log.
Console::WriteLine( "Writing to EventLog.. " );
EventLog::WriteEntry( "MySource", myMessage,
   myEventLogEntryType, myApplicationEventId );
// 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("Creating EventSource");
   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;
}

// Set the 'description' for the event.
string myMessage = "This is my event.";
EventLogEntryType myEventLogEntryType = EventLogEntryType.Warning;
int myApplicationEventId = 100;

// Write the entry in the event log.
Console.WriteLine("Writing to EventLog.. ");
EventLog.WriteEntry("MySource",myMessage,
   myEventLogEntryType, myApplicationEventId);
' Create the source, if it does not already exist.
If Not EventLog.SourceExists("MySource") Then
   EventLog.CreateEventSource("MySource", "myNewLog")
   Console.WriteLine("Creating EventSource")
End If

' Set the 'description' for the event.
Dim myMessage As String = "This is my event."
Dim myEventLogEntryType As EventLogEntryType = EventLogEntryType.Warning
Dim myApplicationEventId As Integer = 100

' Write the entry in the event log.
Console.WriteLine("Writing to EventLog.. ")
EventLog.WriteEntry("MySource", myMessage, myEventLogEntryType, myApplicationEventId)

注解

使用此方法,使用已注册为相应日志的事件源的源,将应用程序定义的 eventID 条目写入事件日志。 和 eventID源一起唯一标识事件。 每个应用程序都可以定义其自己的编号事件以及它们映射到的说明字符串。 事件查看器向用户显示这些字符串,以帮助用户了解出了问题并建议要执行的操作。

注意

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

除了事件标识符之外,此 重载 WriteEntry 还允许为要写入事件日志的事件指定 EventLogEntryTypetype由日志事件查看器“类型”列中的图标和文本指示。 此参数指示事件类型是错误、警告、信息、成功审核还是失败审核。

在使用源写入第一个条目之前,必须创建并配置事件源。 在安装应用程序期间Create新的事件源。 这允许操作系统有时间刷新其已注册事件源及其配置的列表。 如果操作系统尚未刷新其事件源列表,并且您尝试使用新源编写事件,则写入操作将失败。 可以使用 或使用 CreateEventSource 方法配置新源EventLogInstaller。 必须在计算机上具有管理权限才能创建新的事件源。

必须为编写本地化条目或写入直接字符串配置源。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法通过本地化的消息资源文件写入事件。

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

注意

message如果 参数包含 NUL 字符,则事件日志中的消息会在 NUL 字符处终止。

另请参阅

适用于

WriteEntry(String, EventLogEntryType, Int32, Int16)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 void WriteEntry(System::String ^ message, System::Diagnostics::EventLogEntryType type, int eventID, short category);
public void WriteEntry (string message, System.Diagnostics.EventLogEntryType type, int eventID, short category);
member this.WriteEntry : string * System.Diagnostics.EventLogEntryType * int * int16 -> unit
Public Sub WriteEntry (message As String, type As EventLogEntryType, eventID As Integer, category As Short)

参数

message
String

要写入事件日志的字符串。

eventID
Int32

事件的应用程序特定标识符。

category
Int16

与消息关联的应用程序特定子类别。

例外

SourceEventLog 属性尚未设置。

- 或 -

该方法尝试注册新的事件源,但 MachineName 中的计算机名称无效。

- 或 -

已为其他事件日志注册了该源。

- 或 -

eventID 小于零或大于 UInt16.MaxValue

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

// Create an EventLog instance and assign its source.
EventLog^ myLog = gcnew EventLog;
myLog->Source = "ThirdSource";

// Write an informational entry to the event log.
Console::WriteLine( "Write from third source " );
myLog->WriteEntry( "Writing warning to event log.",
   EventLogEntryType::Warning, myEventID, myCategory );
// Create an EventLog instance and assign its source.
EventLog myLog = new EventLog();
myLog.Source = "ThirdSource";

// Write an informational entry to the event log.
Console.WriteLine("Write from third source ");
myLog.WriteEntry("Writing warning to event log.",
                  EventLogEntryType.Warning, myEventID, myCategory);
' Create an EventLog instance and assign its source.
Dim myLog As New EventLog()
myLog.Source = "ThirdSource"

' Write an informational entry to the event log.
Console.WriteLine("Write from third source ")
myLog.WriteEntry("Writing warning to event log.", EventLogEntryType.Warning, _
                     myEventID, myCategory)

注解

使用此方法将包含应用程序定义的 category 条目写入事件日志。 事件查看器使用 类别来筛选事件源写入的事件。 事件查看器可以将类别显示为数值,也可以使用类别作为资源标识符来显示本地化的类别字符串。

注意

参数 category 应为正值。 负类别值在事件查看器中显示为互补正数。 例如,-10 显示为 65,526,-1 显示为 65,535。

注意

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

若要在事件查看器中显示本地化类别字符串,必须使用配置了类别资源文件的事件源,并将 设置为category类别资源文件中的资源标识符。 如果事件源没有配置的类别资源文件,或者指定的 category 未为类别资源文件中的字符串编制索引,则事件查看器显示该条目的数字类别值。 使用 EventLogInstallerEventSourceCreationData 类配置类别资源文件以及资源文件中的类别字符串数。

除了 类别之外,还可以为要写入事件日志的事件指定事件标识符。 事件标识符与事件源一起唯一标识事件。 每个应用程序都可以定义其自己的编号事件以及它们映射到的说明字符串。 事件查看器显示这些字符串值,以帮助用户了解出了问题并建议要执行的操作。

最后,可以为要写入事件日志的事件指定 EventLogEntryTypetype由日志事件查看器“类型”列中的图标和文本指示。 此参数指示事件类型是错误、警告、信息、成功审核还是失败审核。

必须先在组件上EventLog设置 属性,Source然后才能将条目写入日志。 在使用源写入第一个条目之前,必须创建并配置事件源。

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

如果此EventLog实例的 属性中指定的Source源未在组件写入的计算机上注册,WriteEntry则调用 CreateEventSource 并注册源。

注意

如果在调用 CreateEventSourceWriteEntry之前未为 EventLog 实例指定 MachineName ,则本地计算机 (”。假定 ) 。

如果系统需要通过调用 WriteEntry 来注册 Source ,并且Log尚未在EventLog实例上设置 属性,则日志默认为应用程序日志。

注意

上面列出的许多异常是由注册 Source过程中引发的错误生成的。

必须为编写本地化条目或写入直接字符串配置源。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法通过本地化的消息资源文件写入事件。

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

注意

如果将条目写入远程计算机,则如果远程计算机未运行.NET Framework,则文本字符串) ( (消息的值可能不是预期的值。

注意

message如果 参数包含 NUL 字符,则事件日志中的消息在 NUL 字符处终止。

另请参阅

适用于

WriteEntry(String, EventLogEntryType)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 void WriteEntry(System::String ^ message, System::Diagnostics::EventLogEntryType type);
public void WriteEntry (string message, System.Diagnostics.EventLogEntryType type);
member this.WriteEntry : string * System.Diagnostics.EventLogEntryType -> unit
Public Sub WriteEntry (message As String, type As EventLogEntryType)

参数

message
String

要写入事件日志的字符串。

例外

SourceEventLog 属性尚未设置。

- 或 -

该方法尝试注册新的事件源,但 MachineName 中的计算机名称无效。

- 或 -

已为其他事件日志注册了该源。

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

以下示例将警告条目写入本地计算机上的事件日志“MyNewLog”。

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog("MyNewLog");
   myLog->Source = "MyNewLogSource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing warning to event log.", EventLogEntryType::Warning );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample1
{

    public static void Main()
    {

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog("MyNewLog");
        myLog.Source = "MyNewLogSource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing warning to event log.", EventLogEntryType.Warning);
    }
}
Option Strict
Option Explicit

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog("MyNewLog")
        myLog.Source = "MyNewLogSource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing warning to event log.", EventLogEntryType.Warning)
    End Sub
End Class

注解

使用此方法将指定 EventLogEntryType 的条目写入事件日志。 type由日志事件查看器“类型”列中的图标和文本指示 。

注意

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

必须先在组件上EventLog设置 属性,Source然后才能将条目写入日志。 在使用源编写第一个条目之前,必须创建并配置事件源。

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

如果此EventLog实例的 属性中指定的Source源未在组件写入的计算机上注册,WriteEntry则调用CreateEventSource并注册源。

注意

如果在调用 CreateEventSourceWriteEntry之前未为EventLog实例指定 MachineName ,则本地计算机 (“。”假定 ) 。

如果系统需要通过调用 WriteEntry 注册 Source ,并且Log尚未在EventLog实例上设置 属性,则日志默认为应用程序日志。

注意

上面列出的许多异常是由注册 Source过程中引发的错误生成的。

必须将源配置为用于写入本地化条目或编写直接字符串。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法使用本地化的消息资源文件写入事件。

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

注意

如果将条目写入远程计算机,则如果远程计算机未运行.NET Framework,则文本字符串) ( (消息的值可能不是预期的值。

注意

message如果 参数包含 NUL 字符,则事件日志中的消息在 NUL 字符处终止。

另请参阅

适用于

WriteEntry(String, EventLogEntryType, Int32)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 void WriteEntry(System::String ^ message, System::Diagnostics::EventLogEntryType type, int eventID);
public void WriteEntry (string message, System.Diagnostics.EventLogEntryType type, int eventID);
member this.WriteEntry : string * System.Diagnostics.EventLogEntryType * int -> unit
Public Sub WriteEntry (message As String, type As EventLogEntryType, eventID As Integer)

参数

message
String

要写入事件日志的字符串。

eventID
Int32

事件的应用程序特定标识符。

例外

SourceEventLog 属性尚未设置。

- 或 -

该方法尝试注册新的事件源,但 MachineName 中的计算机名称无效。

- 或 -

已为其他事件日志注册了该源。

- 或 -

eventID 小于零或大于 UInt16.MaxValue

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

// Create an EventLog instance and assign its source.
EventLog^ myLog = gcnew EventLog;
myLog->Source = "ThirdSource";

// Write an informational entry to the event log.
Console::WriteLine( "Write from third source " );
myLog->WriteEntry( "Writing warning to event log.",
   EventLogEntryType::Warning, myEventID, myCategory );
// Create an EventLog instance and assign its source.
EventLog myLog = new EventLog();
myLog.Source = "ThirdSource";

// Write an informational entry to the event log.
Console.WriteLine("Write from third source ");
myLog.WriteEntry("Writing warning to event log.",
                  EventLogEntryType.Warning, myEventID, myCategory);
' Create an EventLog instance and assign its source.
Dim myLog As New EventLog()
myLog.Source = "ThirdSource"

' Write an informational entry to the event log.
Console.WriteLine("Write from third source ")
myLog.WriteEntry("Writing warning to event log.", EventLogEntryType.Warning, _
                     myEventID, myCategory)

注解

使用此方法将具有应用程序定义的 eventID 条目写入事件日志。 eventID与源一起唯一标识事件。 每个应用程序都可以定义其自己的编号事件以及它们映射到的说明字符串。 事件查看器显示这些字符串值,以帮助用户了解出了问题并建议要采取的操作。

注意

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

除了事件标识符之外,还可以为要写入事件日志的事件指定 EventLogEntryTypetype由日志事件查看器“类型”列中的图标和文本指示 。 此参数指示事件类型是错误、警告、信息、成功审核还是失败审核。

必须先在组件上EventLog设置 属性,Source然后才能将条目写入日志。 在使用源编写第一个条目之前,必须创建并配置事件源。

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

如果此EventLog实例的 属性中指定的Source源未在组件写入的计算机上注册,WriteEntry则调用CreateEventSource并注册源。

注意

如果在调用 CreateEventSourceWriteEntry之前未为EventLog实例指定 MachineName ,则本地计算机 (“。”假定 ) 。

如果系统需要通过调用 WriteEntry 注册 Source ,并且Log尚未在EventLog实例上设置 属性,则日志默认为应用程序日志。

注意

上面列出的许多异常是由注册 Source过程中引发的错误生成的。

必须将源配置为用于写入本地化条目或编写直接字符串。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法使用本地化的消息资源文件写入事件。

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

注意

如果将条目写入远程计算机,则如果远程计算机未运行.NET Framework,则文本字符串) ( (消息的值可能不是预期的值。

注意

message如果 参数包含 NUL 字符,则事件日志中的消息在 NUL 字符处终止。

另请参阅

适用于

WriteEntry(String, String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 static void WriteEntry(System::String ^ source, System::String ^ message);
public static void WriteEntry (string source, string message);
static member WriteEntry : string * string -> unit
Public Shared Sub WriteEntry (source As String, message As String)

参数

source
String

应用程序在指定计算机上注册时所采用的源。

message
String

要写入事件日志的字符串。

例外

source 值是空字符串 ("")。

- 或 -

source 值为 null

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

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

#using <System.dll>

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" ) )
   {
      EventLog::CreateEventSource( "MySource", "myNewLog" );
      Console::WriteLine( "CreatingEventSource" );
   }

   
   // Write an informational entry to the event log.    
   EventLog::WriteEntry( "MySource", "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("CreatingEventSource");
            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;
        }

        // Write an informational entry to the event log.
        EventLog.WriteEntry("MySource", "Writing to event log.");
    }
}
Option Strict
Option Explicit

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        ' Create the source, if it does not already exist.
        If Not EventLog.SourceExists("MySource") Then
            EventLog.CreateEventSource("MySource", "myNewLog")
            Console.WriteLine("CreatingEventSource")
        End If
        
        
        ' Write an informational entry to the event log.    
        EventLog.WriteEntry("MySource", "Writing to event log.")
    End Sub
End Class

注解

使用此方法,使用已注册为相应日志的事件源的源,将信息条目写入事件日志。 如果要指定任何其他 EventLogEntryType,请使用 不同的重载 WriteEntry

在使用源编写第一个条目之前,必须创建并配置事件源。 在安装应用程序期间Create新的事件源。 这允许操作系统有时间刷新其已注册的事件源列表及其配置。 如果操作系统尚未刷新其事件源列表,并且您尝试使用新源编写事件,则写入操作将失败。 可以使用 或 CreateEventSource 方法配置新源EventLogInstaller。 必须在计算机上具有管理权限才能创建新的事件源。

必须将源配置为用于写入本地化条目或编写直接字符串。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法使用本地化的消息资源文件写入事件。

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

注意

message如果 参数包含 NUL 字符,则事件日志中的消息在 NUL 字符处终止。

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

另请参阅

适用于

WriteEntry(String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 void WriteEntry(System::String ^ message);
public void WriteEntry (string message);
member this.WriteEntry : string -> unit
Public Sub WriteEntry (message As String)

参数

message
String

要写入事件日志的字符串。

例外

SourceEventLog 属性尚未设置。

- 或 -

该方法尝试注册新的事件源,但 MachineName 中的计算机名称无效。

- 或 -

已为其他事件日志注册了该源。

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

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

#using <System.dll>

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 实例关联的事件日志。 如果要指定任何其他 EventLogEntryType,请使用 不同的重载 WriteEntry

注意

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

必须先在组件上EventLog设置 属性,Source然后才能将条目写入日志。 在使用源编写第一个条目之前,必须创建并配置事件源。

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

如果此EventLog实例的 属性中指定的Source源未在组件写入的计算机上注册,WriteEntry则调用CreateEventSource并注册源。

注意

如果在调用 CreateEventSourceWriteEntry之前未为EventLog实例指定 MachineName ,则本地计算机 (“。”假定 ) 。

如果系统需要通过调用 WriteEntry 注册 Source ,并且Log尚未在EventLog实例上设置 属性,则日志默认为应用程序日志。

注意

上面列出的许多异常都是在注册 Source过程中引发的错误生成的。

必须将源配置为用于写入本地化条目或编写直接字符串。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法使用本地化的消息资源文件写入事件。

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

注意

如果将条目写入远程计算机,则如果远程计算机未运行.NET Framework,则文本字符串) ( (消息的值可能不是预期的值。

注意

message如果 参数包含 NUL 字符,则事件日志中的消息在 NUL 字符处终止。

另请参阅

适用于

WriteEntry(String, String, EventLogEntryType)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

public:
 static void WriteEntry(System::String ^ source, System::String ^ message, System::Diagnostics::EventLogEntryType type);
public static void WriteEntry (string source, string message, System.Diagnostics.EventLogEntryType type);
static member WriteEntry : string * string * System.Diagnostics.EventLogEntryType -> unit
Public Shared Sub WriteEntry (source As String, message As String, type As EventLogEntryType)

参数

source
String

应用程序在指定计算机上注册时所采用的源。

message
String

要写入事件日志的字符串。

例外

source 值是空字符串 ("")。

- 或 -

source 值为 null

- 或 -

消息字符串长于 31,839 字节(在 Windows Vista 之前,在 Windows 操作系统上为 32,766 字节)。

- 或 -

此源名称导致注册表项路径的长度超过 254 个字符。

事件日志的注册表项未能打开。

将事件项写入事件日志时,操作系统报告了一个错误。 一个 Windows 错误代码不可用。

示例

以下示例将警告条目写入本地计算机上的事件日志“MyNewLog”。

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Write an informational entry to the event log.    
   EventLog::WriteEntry( "MySource", "Writing warning to event log.", EventLogEntryType::Warning );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample2
{

    public static void Main()
    {

        // Write an informational entry to the event log.
        EventLog.WriteEntry("MySource",
            "Writing warning to event log.",
            EventLogEntryType.Warning);
    }
}
Option Explicit
Option Strict

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        ' Write an informational entry to the event log.    
        EventLog.WriteEntry("MySource", "Writing warning to event log.", _
            EventLogEntryType.Warning)
    End Sub
End Class

注解

使用此方法将指定 EventLogEntryType 的条目写入事件日志,使用已注册为相应日志的事件源的源。 type由日志事件查看器“类型”列中的图标和文本指示 。

注意

字符串 message 不能包含 %n,其中 n 是整数值 (例如 %1) ,因为事件查看器将其视为插入字符串。 由于 Internet 协议版本 6 (IPv6) 地址可以包含此字符序列,因此无法记录包含 IPv6 地址的事件消息。

在使用源写入第一个条目之前,必须创建并配置事件源。 在安装应用程序期间Create新的事件源。 这允许操作系统有时间刷新其已注册事件源及其配置的列表。 如果操作系统尚未刷新其事件源列表,并且您尝试使用新源编写事件,则写入操作将失败。 可以使用 或使用 CreateEventSource 方法配置新源EventLogInstaller。 必须在计算机上具有管理权限才能创建新的事件源。

必须为编写本地化条目或写入直接字符串配置源。 方法 WriteEntry 将给定的字符串直接写入事件日志;它不使用可本地化的消息资源文件。 WriteEvent使用 方法通过本地化的消息资源文件写入事件。

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

注意

message如果 参数包含 NUL 字符,则事件日志中的消息会在 NUL 字符处终止。

另请参阅

适用于