EventLog.Delete 方法

定义

移除日志资源。

重载

Delete(String, String)

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

Delete(String)

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

Delete(String, String)

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

public:
 static void Delete(System::String ^ logName, System::String ^ machineName);
public static void Delete (string logName, string machineName);
[System.MonoNotSupported("remote machine is not supported")]
public static void Delete (string logName, string machineName);
static member Delete : string * string -> unit
[<System.MonoNotSupported("remote machine is not supported")>]
static member Delete : string * string -> unit
Public Shared Sub Delete (logName As String, machineName As String)

参数

logName
String

要删除的日志的名称。 可能的值包括:“应用程序”、“安全”、“系统”和指定计算机上的任何自定义事件日志。

machineName
String

要从中删除日志的计算机名称,对于本地计算机则为“.”。

属性
MonoNotSupportedAttribute

例外

logName 为空字符串 ("") 或 null

  • 或 - machineName 不是有效的计算机名称。

事件日志的注册表项未能在指定的计算机上打开。

  • 或 -

指定的计算机上不存在该日志。

未成功清除事件日志。

  • 或 -

无法打开日志。 一个 Windows 错误代码不可用。

示例

以下示例从指定计算机中删除日志。 该示例从其源确定日志。

备注

多个源可能会写入事件日志。 删除自定义日志之前,请确保没有其他源写入该日志。

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   String^ logName;
   if ( EventLog::SourceExists( "MySource", "MyMachine") )
   {
      
      // Find the log associated with this source.    
      logName = EventLog::LogNameFromSourceName( "MySource", "MyMachine" );
      // Make sure the source is in the log we believe it to be in
      if (logName != "MyLog")
          return -1;
      // Delete the source and the log.
      EventLog::DeleteEventSource( "MySource", "MyMachine" );
      EventLog::Delete( logName, "MyMachine" );
      Console::WriteLine( "{0} deleted.", logName );
   }
   else
        {
            // Create the event source to make next try successful.
            EventSourceCreationData^ mySourceData = gcnew EventSourceCreationData("MySource", "MyLog");
            mySourceData->MachineName = "MyMachine";
            EventLog::CreateEventSource(mySourceData);
        }
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample
{
    public static void Main()
    {
        string logName;

        if (EventLog.SourceExists("MySource", "MyMachine"))
        {
            // Find the log associated with this source.
            logName = EventLog.LogNameFromSourceName("MySource", "MyMachine");
            // Make sure the source is in the log we believe it to be in.
            if (logName != "MyLog")
                return;
            // Delete the source and the log.
            EventLog.DeleteEventSource("MySource", "MyMachine");
            EventLog.Delete(logName, "MyMachine");

            Console.WriteLine(logName + " deleted.");
        }
        else
        {
            // Create the event source to make next try successful.
            EventSourceCreationData mySourceData = new EventSourceCreationData("MySource", "MyLog");
            mySourceData.MachineName = "MyMachine";
            EventLog.CreateEventSource(mySourceData);
        }
    }
}
Option Explicit On
Option Strict On

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        Dim logName As String

        If EventLog.SourceExists("MySource", "MyMachine") Then
            ' Find the log associated with this source.    
            logName = EventLog.LogNameFromSourceName("MySource", "MyMachine")
            ' Make sure the source is in the log we believe it to be in
            If (logName <> "MyLog") Then
                Return
            End If
            ' Delete the source and the log.
            EventLog.DeleteEventSource("MySource", "MyMachine")
            EventLog.Delete(logName, "MyMachine")

            Console.WriteLine((logName & " deleted."))
        Else
            ' Create the event source to make next try successful.
            Dim mySourceData As New EventSourceCreationData("MySource", "MyLog")
            mySourceData.MachineName = "MyMachine"
            EventLog.CreateEventSource(mySourceData)
        End If
    End Sub
End Class

注解

如果要删除的日志位于远程计算机上,请使用此方法。 可以删除计算机上的任何日志,前提是你具有相应的注册表权限。

Delete从指定的计算机中删除由machineName该日志指定的logName日志。 如果只想删除注册到日志的源,请调用 DeleteEventSource。 如果只想删除日志条目,请调用 ClearDelete 并且 DeleteEventSourcestatic 方法,因此可以在类本身上调用它们。 无需创建调用任一方法的 EventLog 实例。

此方法首先删除保存日志内容的文件。 然后,它会访问注册表,并删除为该日志注册的所有事件源。 如果稍后重新创建日志,则应再次注册事件源(如果要重复使用)。 如果不在未指定日志名称的情况下注册事件源和其他用户写入事件源,则会在应用程序事件日志中创建事件源。 因此,以前能够将条目写入已删除并重新创建的日志的应用程序将改为写入应用程序日志,因为它现在包含事件源。

备注

重新创建事件日志可能是一个困难的过程。 避免删除任何系统创建的事件日志,例如应用程序日志。

通过调用删除日志以 Delete 自动删除注册到该日志的源。 这可以使其他应用程序使用该日志操作。

另请参阅

适用于

Delete(String)

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

public:
 static void Delete(System::String ^ logName);
public static void Delete (string logName);
static member Delete : string -> unit
Public Shared Sub Delete (logName As String)

参数

logName
String

要删除的日志的名称。 可能的值包括:“应用程序”、“安全性”、“系统”和计算机上的任何自定义事件日志。

例外

logName 为空字符串 ("") 或 null

事件日志的注册表项未能在本地计算机上打开。

  • 或 -

本地计算机上不存在该日志。

未成功清除事件日志。

  • 或 -

无法打开日志。 一个 Windows 错误代码不可用。

示例

以下示例从本地计算机中删除日志。 该示例从其源确定日志。

备注

多个源可能会写入事件日志。 删除自定义日志之前,请确保没有其他源写入该日志。

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   String^ logName;
   if ( EventLog::SourceExists( "MySource" ) )
   {
      
      // Find the log associated with this source.    
      logName = EventLog::LogNameFromSourceName( "MySource", "." );
      // Make sure the source is in the log we believe it to be in
      if (logName != "MyLog")
          return -1;
      // Delete the source and the log.
      EventLog::DeleteEventSource( "MySource" );
      EventLog::Delete( logName );
      Console::WriteLine( "{0} deleted.", logName );
   }
   else
        {
            // Create the event source to make next try successful.
            EventLog::CreateEventSource("MySource", "MyLog");
        }
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample1
{
    public static void Main()
    {
        string logName;

        if (EventLog.SourceExists("MySource"))
        {
            // Find the log associated with this source.
            logName = EventLog.LogNameFromSourceName("MySource", ".");
            // Make sure the source is in the log we believe it to be in.
            if (logName != "MyLog")
                return;
            // Delete the source and the log.
            EventLog.DeleteEventSource("MySource");
            EventLog.Delete(logName);

            Console.WriteLine(logName + " deleted.");
        }
        else
        {
            // Create the event source to make next try successful.
            EventLog.CreateEventSource("MySource", "MyLog");
        }
    }
}
Option Explicit On
Option Strict On

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        Dim logName As String

        If EventLog.SourceExists("MySource") Then
            ' Find the log associated with this source.    
            logName = EventLog.LogNameFromSourceName("MySource", ".")
            ' Make sure the source is in the log we believe it to be in
            If (logName <> "MyLog") Then
                Return
            End If
            ' Delete the source and the log.
            EventLog.DeleteEventSource("MySource")
            EventLog.Delete(logName)

            Console.WriteLine((logName & " deleted."))
        Else
            ' Create the event source to make next try successful.
            EventLog.CreateEventSource("MySource", "MyLog")
        End If
    End Sub
End Class

注解

如果要删除的日志位于本地计算机上,请使用此方法。 可以删除计算机上的任何日志,前提是你具有相应的注册表权限。

Delete 从本地计算机中删除指定的 logName 日志。 如果只想删除注册到日志的源,请调用 DeleteEventSource。 如果只想删除日志条目,请调用 ClearDelete 并且 DeleteEventSourcestatic 方法,因此可以在类本身上调用它们。 不需要创建调用任一方法的新实例 EventLog

该方法 Delete 首先删除保存日志内容的文件。 然后,它会访问注册表,并删除为该日志注册的所有事件源。 如果在以后重新创建日志,则应再次注册事件源(如果要重复使用它们)。 如果不注册事件源和其他用户写入事件源而不指定日志名称,则会在应用程序事件日志中创建事件源。 因此,以前能够将条目写入已删除和重新创建的日志的应用程序将改为写入应用程序日志,因为它现在包含事件源。

备注

重新创建事件日志可能是一个困难的过程。 避免删除系统创建的任何事件日志,例如应用程序日志。

通过调用删除日志以 Delete 自动删除注册到该日志的源。 这可以使其他应用程序使用该登录操作。

另请参阅

适用于