EventLog.GetEventLogs Yöntem

Tanım

Olay günlüklerinden oluşan bir dizi oluşturur.

Aşırı Yüklemeler

GetEventLogs(String)

Verilen bilgisayardaki tüm olay günlüklerini arar ve listeyi içeren bir nesne dizisi EventLog oluşturur.

GetEventLogs()

Yerel bilgisayardaki tüm olay günlüklerini arar ve listeyi içeren bir nesne dizisi EventLog oluşturur.

GetEventLogs(String)

Kaynak:
EventLog.cs
Kaynak:
EventLog.cs
Kaynak:
EventLog.cs

Verilen bilgisayardaki tüm olay günlüklerini arar ve listeyi içeren bir nesne dizisi EventLog oluşturur.

public:
 static cli::array <System::Diagnostics::EventLog ^> ^ GetEventLogs(System::String ^ machineName);
public static System.Diagnostics.EventLog[] GetEventLogs (string machineName);
static member GetEventLogs : string -> System.Diagnostics.EventLog[]
Public Shared Function GetEventLogs (machineName As String) As EventLog()

Parametreler

machineName
String

Olay günlüklerinin arandığı bilgisayar.

Döndürülenler

Verilen bilgisayardaki günlükleri temsil eden tür EventLog dizisi.

Özel durumlar

machineName Parametresi geçersiz bir bilgisayar adı.

Kayıt defterine okuma erişiminiz yok.

-veya-

Bilgisayarda olay günlüğü hizmeti yok.

Örnekler

Aşağıdaki örnek, "myServer" bilgisayarındaki günlüklerin listesini alır. Ardından her bir günlüğün adını döndürür.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   array<EventLog^>^remoteEventLogs;
   remoteEventLogs = EventLog::GetEventLogs( "myServer" );
   Console::WriteLine( "Number of logs on computer: {0}", remoteEventLogs->Length );
   System::Collections::IEnumerator^ myEnum = remoteEventLogs->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      EventLog^ log = safe_cast<EventLog^>(myEnum->Current);
      Console::WriteLine( "Log: {0}", log->Log );
   }
}
using System;
using System.Diagnostics;

class MySample
{
    public static void Main()
    {
        EventLog[] remoteEventLogs;

        remoteEventLogs = EventLog.GetEventLogs("myServer");

        Console.WriteLine("Number of logs on computer: " + remoteEventLogs.Length);

        foreach (EventLog log in remoteEventLogs)
        {
            Console.WriteLine("Log: " + log.Log);
        }
    }
}
Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        Dim remoteEventLogs() As EventLog
        
        remoteEventLogs = EventLog.GetEventLogs("myServer")
        
        Console.WriteLine(("Number of logs on computer: " & remoteEventLogs.Length))
        
        Dim log As EventLog
        For Each log In  remoteEventLogs
            Console.WriteLine(("Log: " & log.Log))
        Next log
    End Sub
End Class

Açıklamalar

Nesneleri dizisiEventLog, çağrısı GetEventLogs yapıldığında parametresi tarafından machineName belirtilen bilgisayardaki tüm olay günlüklerinin anlık görüntüsüdür. Bu dinamik bir koleksiyon olmadığından, günlüklerin gerçek zamanlı olarak silinmesini veya oluşturulmasını yansıtmaz. Okumadan veya yazmadan önce dizideki bir günlüğün var olduğunu doğrulamanız gerekir. Dizi genellikle en az üç günlük içerir: Uygulama, Sistem ve Güvenlik. Belirtilen bilgisayarda özel günlükler oluşturduysanız, bunlar dizide de görünür.

GetEventLogs bir static yöntemdir, bu nedenle sınıfın EventLog kendisinde çağrılabilir. yöntemine çağrı yapmak için bir EventLog nesne örneği oluşturmak gerekli değildir.

Olay günlüklerinin listesini almak için uygun kayıt defteri izinlerine sahip olmanız gerekir. Bu izinler ve SourceExistsçağrıları Exists için gerekli olan izinlerle aynıdır.

Ayrıca bkz.

Şunlara uygulanır

GetEventLogs()

Kaynak:
EventLog.cs
Kaynak:
EventLog.cs
Kaynak:
EventLog.cs

Yerel bilgisayardaki tüm olay günlüklerini arar ve listeyi içeren bir nesne dizisi EventLog oluşturur.

public:
 static cli::array <System::Diagnostics::EventLog ^> ^ GetEventLogs();
public static System.Diagnostics.EventLog[] GetEventLogs ();
static member GetEventLogs : unit -> System.Diagnostics.EventLog[]
Public Shared Function GetEventLogs () As EventLog()

Döndürülenler

Yerel bilgisayardaki günlükleri temsil eden tür EventLog dizisi.

Özel durumlar

Kayıt defterine okuma erişiminiz yok.

-veya-

Bilgisayarda olay günlüğü hizmeti yok.

Örnekler

Aşağıdaki örnek, yerel bilgisayarda tanımlanan olay günlüklerini numaralandırır ve her olay günlüğü için yapılandırma ayrıntılarını görüntüler.

void DisplayEventLogProperties()
{
   
   // Iterate through the current set of event log files,
   // displaying the property settings for each file.
   array<EventLog^>^eventLogs = EventLog::GetEventLogs();
   System::Collections::IEnumerator^ myEnum = eventLogs->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      EventLog^ e = safe_cast<EventLog^>(myEnum->Current);
      Int64 sizeKB = 0;
      Console::WriteLine();
      Console::WriteLine( "{0}:", e->LogDisplayName );
      Console::WriteLine( "  Log name = \t\t {0}", e->Log );
      Console::WriteLine( "  Number of event log entries = {0}", e->Entries->Count );
      
      // Determine if there is a file for this event log.
      RegistryKey ^ regEventLog = Registry::LocalMachine->OpenSubKey( String::Format( "System\\CurrentControlSet\\Services\\EventLog\\{0}", e->Log ) );
      if ( regEventLog )
      {
         Object^ temp = regEventLog->GetValue( "File" );
         if ( temp != nullptr )
         {
            Console::WriteLine( "  Log file path = \t {0}", temp );
            FileInfo^ file = gcnew FileInfo( temp->ToString() );
            
            // Get the current size of the event log file.
            if ( file->Exists )
            {
               sizeKB = file->Length / 1024;
               if ( (file->Length % 1024) != 0 )
               {
                  sizeKB++;
               }
               Console::WriteLine( "  Current size = \t {0} kilobytes", sizeKB );
            }
         }
         else
         {
            Console::WriteLine( "  Log file path = \t <not set>" );
         }
      }
      
      // Display the maximum size and overflow settings.
      sizeKB = e->MaximumKilobytes;
      Console::WriteLine( "  Maximum size = \t {0} kilobytes", sizeKB );
      Console::WriteLine( "  Overflow setting = \t {0}", e->OverflowAction );
      switch ( e->OverflowAction )
      {
         case OverflowAction::OverwriteOlder:
            Console::WriteLine( "\t Entries are retained a minimum of {0} days.", e->MinimumRetentionDays );
            break;

         case OverflowAction::DoNotOverwrite:
            Console::WriteLine( "\t Older entries are not overwritten." );
            break;

         case OverflowAction::OverwriteAsNeeded:
            Console::WriteLine( "\t If number of entries equals max size limit, a new event log entry overwrites the oldest entry." );
            break;

         default:
            break;
      }
   }
}
static void DisplayEventLogProperties()
{
    // Iterate through the current set of event log files,
    // displaying the property settings for each file.

    EventLog[] eventLogs = EventLog.GetEventLogs();
    foreach (EventLog e in eventLogs)
    {
        Int64 sizeKB = 0;

        Console.WriteLine();
        Console.WriteLine("{0}:", e.LogDisplayName);
        Console.WriteLine("  Log name = \t\t {0}", e.Log);

        Console.WriteLine("  Number of event log entries = {0}", e.Entries.Count.ToString());

        // Determine if there is an event log file for this event log.
        RegistryKey regEventLog = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Services\\EventLog\\" + e.Log);
        if (regEventLog != null)
        {
            Object temp = regEventLog.GetValue("File");
            if (temp != null)
            {
                Console.WriteLine("  Log file path = \t {0}", temp.ToString());
                FileInfo file = new FileInfo(temp.ToString());

                // Get the current size of the event log file.
                if (file.Exists)
                {
                    sizeKB = file.Length / 1024;
                    if ((file.Length % 1024) != 0)
                    {
                        sizeKB++;
                    }
                    Console.WriteLine("  Current size = \t {0} kilobytes", sizeKB.ToString());
                }
            }
            else
            {
                Console.WriteLine("  Log file path = \t <not set>");
            }
        }

        // Display the maximum size and overflow settings.

        sizeKB = e.MaximumKilobytes;
        Console.WriteLine("  Maximum size = \t {0} kilobytes", sizeKB.ToString());
        Console.WriteLine("  Overflow setting = \t {0}", e.OverflowAction.ToString());

        switch (e.OverflowAction)
        {
            case OverflowAction.OverwriteOlder:
                Console.WriteLine("\t Entries are retained a minimum of {0} days.",
                    e.MinimumRetentionDays);
                break;
            case OverflowAction.DoNotOverwrite:
                Console.WriteLine("\t Older entries are not overwritten.");
                break;
            case OverflowAction.OverwriteAsNeeded:
                Console.WriteLine("\t If number of entries equals max size limit, a new event log entry overwrites the oldest entry.");
                break;
            default:
                break;
        }
    }
}
Shared Sub DisplayEventLogProperties()

   ' Iterate through the current set of event log files,
   ' displaying the property settings for each file.
   Dim eventLogs As EventLog() = EventLog.GetEventLogs()
   
   Dim e As EventLog
   For Each e In  eventLogs
      Dim sizeKB As Int64 = 0
      
      Console.WriteLine()
      Console.WriteLine("{0}:", e.LogDisplayName)
      Console.WriteLine("  Log name = " + ControlChars.Tab _
                          + ControlChars.Tab + " {0}", e.Log)

      Console.WriteLine("  Number of event log entries = {0}", e.Entries.Count.ToString())
      
      ' Determine if there is an event log file for this event log.
      Dim regEventLog As RegistryKey
      regEventLog = Registry.LocalMachine.OpenSubKey( _
             ("System\CurrentControlSet\Services\EventLog\" + e.Log))

      If Not (regEventLog Is Nothing) Then

         Dim temp As Object = regEventLog.GetValue("File")
         If Not (temp Is Nothing) Then

            Console.WriteLine("  Log file path = " + ControlChars.Tab _
                                  + " {0}", temp.ToString())
            Dim file As New FileInfo(temp.ToString())
            
            ' Get the current size of the event log file.
            If file.Exists Then
               sizeKB = file.Length / 1024
               If file.Length Mod 1024 <> 0 Then
                  sizeKB += 1
               End If
               Console.WriteLine("  Current size = " + ControlChars.Tab _
                          + " {0} kilobytes", sizeKB.ToString())
            End If
         Else
            Console.WriteLine("  Log file path = " + ControlChars.Tab _
                             + " <not set>")
         End If
      End If
      
      ' Display the maximum size and overflow settings.
      sizeKB = e.MaximumKilobytes
      Console.WriteLine("  Maximum size = " + ControlChars.Tab _
                         + " {0} kilobytes", sizeKB.ToString())
      Console.WriteLine("  Overflow setting = " + ControlChars.Tab _
                         + " {0}", e.OverflowAction.ToString())
      
      Select Case e.OverflowAction
         Case OverflowAction.OverwriteOlder
            Console.WriteLine(ControlChars.Tab + _
                 " Entries are retained a minimum of {0} days.", _
                 e.MinimumRetentionDays)
         Case OverflowAction.DoNotOverwrite
            Console.WriteLine(ControlChars.Tab + _
                 " Older entries are not overwritten.")
         Case OverflowAction.OverwriteAsNeeded
            Console.WriteLine(ControlChars.Tab + _
                 " If number of entries equals max size limit, a new event log entry overwrites the oldest entry.")
         Case Else
      End Select

   Next e

End Sub

Açıklamalar

Nesne dizisi EventLog , çağrısı GetEventLogs yapıldığında yerel bilgisayardaki tüm olay günlüklerinin anlık görüntüsüdür. Bu dinamik bir koleksiyon olmadığından, günlüklerin gerçek zamanlı olarak silinmesini veya oluşturulmasını yansıtmaz. Okumadan veya yazmadan önce dizideki bir günlüğün var olduğunu doğrulamanız gerekir. Dizi genellikle en az üç günlük içerir: Uygulama, Sistem ve Güvenlik. Yerel bilgisayarda özel günlükler oluşturduysanız, bunlar dizide de görünür.

Olay günlüklerinin listesini almak için uygun kayıt defteri izinlerine sahip olmanız gerekir. Bu izinler ve SourceExistsçağrıları Exists için gerekli olan izinlerle aynıdır.

Ayrıca bkz.

Şunlara uygulanır