EventLog Třída

Definice

Poskytuje interakci s protokoly událostí systému 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
Dědičnost
Implementuje

Příklady

Následující příklad vytvoří zdroj MySource události, pokud ještě neexistuje, a zapíše položku do protokolu MyNewLogudálostí .

Poznámka

Počínaje systémem Windows Vista musíte tuto aplikaci spustit jako správce.

#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

Poznámky

EventLog umožňuje přístup k protokolům událostí systému Windows, které zaznamenávají informace o důležitých softwarových nebo hardwarových událostech, nebo je přizpůsobit. Pomocí EventLogmůžete číst z existujících protokolů, zapisovat položky do protokolů, vytvářet nebo odstraňovat zdroje událostí, odstraňovat protokoly a odpovídat na položky protokolu. Nové protokoly můžete také vytvořit při vytváření zdroje událostí.

Důležité

Tento typ implementuje IDisposable rozhraní. Po dokončení používání tohoto typu byste ho měli přímo nebo nepřímo odstranit. Pokud chcete odstranit typ přímo, zavolejte jeho Dispose metodu try/catch v bloku. Pokud ho chcete odstranit nepřímo, použijte konstruktor jazyka, například using (v jazyce C#) nebo Using (v jazyce Visual Basic). Další informace najdete v části "Použití objektu, který implementuje IDisposable" v IDisposable tématu rozhraní.

Kromě poskytování přístupu k jednotlivým protokolům událostí a jejich položkám EventLog vám třída umožňuje přístup ke kolekci všech protokolů událostí. Členy EventLog můžete použít static k odstranění protokolů, získání seznamů protokolů, vytvoření nebo odstranění zdroje nebo k určení, jestli počítač již obsahuje určitý zdroj.

Existují tři výchozí protokoly událostí: Aplikace, Systém a Zabezpečení. Protokol zabezpečení je jen pro čtení. Další protokoly událostí můžou mít i jiné aplikace a služby, které nainstalujete, například Active Directory.

Při použití EventLog třídy existují bezpečnostní aspekty. EventLog vyžaduje EventLogPermission oprávnění pro konkrétní akce v rozhraní .NET Framework 2.0 a novějších verzích nebo úplný vztah důvěryhodnosti v rozhraní .NET Framework 1.0 a 1.1. Doporučujeme neudělovat EventLogPermission částečně důvěryhodný kód. Žádný objekt protokolu událostí, včetně EventLogEntryCollection objektů a EventLogEntry , byste nikdy neměli předávat méně důvěryhodnému kódu. Například vytvoření objektu EventLog , zápis položky a následné předání objektu EventLog do částečně důvěryhodného kódu může vytvořit problém se zabezpečením, protože schopnost číst a zapisovat do protokolu událostí umožňuje kódu provádět akce, jako je vydávání zpráv protokolu událostí jménem jiné aplikace.

Počínaje systémem Windows Vista určuje Řízení uživatelských účtů (UAC) přihlašovací údaje uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit úroveň svých přihlašovacích údajů ze standardního uživatele na správce. Můžete to udělat při spuštění aplikace tak, že otevřete místní nabídku aplikace (pokud používáte myš, klikněte pravým tlačítkem myši na ikonu aplikace) a označíte, že chcete aplikaci spustit jako správce.

Pomocí příkazu EventLog můžete vytvořit vlastní protokoly událostí, které můžete zobrazit prostřednictvím Prohlížeč událostí serveru. RegisterDisplayName Pomocí metody zobrazte lokalizovaný název protokolu událostí v Prohlížeč událostí. ModifyOverflowPolicy Pomocí metody nakonfigurujte chování protokolu událostí, když dosáhne maximální velikosti protokolu.

Pokud chcete číst z protokolu událostí, zadejte název protokolu (Log vlastnost) a název počítače serveru (MachineName vlastnost pro protokol událostí. Pokud nezadáte název počítače serveru, předpokládá se místní počítač ".". Zdroj událostí (Source vlastnost) není nutné zadávat, protože zdroj se vyžaduje jenom pro zápis do protokolů. Vlastnost Entries se automaticky vyplní seznamem položek protokolu událostí.

Pokud chcete zapisovat do protokolu událostí, zadejte nebo vytvořte zdroj událostí (Source vlastnost). Abyste mohli vytvořit nový zdroj událostí, musíte mít v počítači přihlašovací údaje správce. Zdroj událostí zaregistruje aplikaci pomocí protokolu událostí jako platný zdroj položek. Zdroj událostí můžete použít k zápisu pouze do jednoho protokolu najednou. Vlastnost Source může být libovolný náhodný řetězec, ale název musí být odlišný od jiných zdrojů v počítači. Zdrojem událostí je obvykle název aplikace nebo jiný identifikační řetězec. Pokus o vytvoření duplicitní Source hodnoty vyvolá výjimku. Jeden protokol událostí ale může být přidružený k více zdrojům.

Pokud zdroj událostí pro protokol událostí přidružený k EventLog instanci neexistuje, vytvoří se nový zdroj událostí. Pokud chcete vytvořit zdroj událostí v systému Windows Vista a novějším nebo Windows Serveru 2003, musíte mít přihlašovací údaje správce.

Tento požadavek je způsoben tím, že všechny protokoly událostí, včetně protokolů zabezpečení, musí být prohledána, aby bylo možné určit, zda je zdroj událostí jedinečný. Počínaje systémem Windows Vista, uživatelé nemají oprávnění pro přístup k protokolu zabezpečení; SecurityException proto je vyvolán .

Důležité

Vytvoření nebo odstranění zdroje událostí vyžaduje synchronizaci základního kódu pomocí pojmenovaného mutexu. Pokud aplikace s vysokou úrovní oprávnění uzamkne pojmenovaný mutex, pokus o vytvoření nebo odstranění zdroje událostí způsobí, že aplikace přestane reagovat, dokud se zámek nespustí. Pokud chcete tomuto problému předejít, nikdy neudělujte UnmanagedCode oprávnění k nedůvěryhodnému kódu. Kromě toho UnmanagedCode oprávnění potenciálně umožňuje obejít jiná oprávnění a měla by být udělena pouze vysoce důvěryhodnému kódu.

Aplikace a služby by se měly zapisovat do aplikačního protokolu nebo do vlastního protokolu. Ovladače zařízení by se měly zapisovat do systémového protokolu. Pokud vlastnost explicitně nenastavíte Log , protokol událostí se ve výchozím nastavení nastaví na Protokol aplikace.

Poznámka

Neexistuje nic, co by aplikaci chránilo před zápisem jako jakýkoli registrovaný zdroj. Pokud je aplikaci uděleno Write oprávnění, může zapisovat události pro jakýkoli platný zdroj zaregistrovaný v počítači.

K zápisu WriteEvent událostí do protokolu událostí použijte metody a WriteEntry . Je nutné zadat zdroj událostí pro zápis událostí; před zápisem první položky se zdrojem musíte vytvořit a nakonfigurovat zdroj událostí.

Nový zdroj událostí vytvořte během instalace aplikace. Operační systém tak může aktualizovat seznam registrovaných zdrojů událostí a jejich konfiguraci. Pokud operační systém neaktualizuje seznam zdrojů událostí a pokusíte se napsat událost s novým zdrojem, operace zápisu selže. Nový zdroj můžete nakonfigurovat pomocí objektu EventLogInstallerCreateEventSource nebo metody . Abyste mohli vytvořit nový zdroj událostí, musíte mít v počítači přihlašovací údaje správce.

Každý zdroj může zapisovat pouze do jednoho protokolu událostí najednou; aplikace však může k zápisu do více protokolů událostí použít více zdrojů. Vaše aplikace může například vyžadovat více zdrojů nakonfigurovaných pro různé protokoly událostí nebo různé soubory prostředků. Pokud chcete změnit podrobnosti konfigurace existujícího zdroje, musíte zdroj odstranit a pak ho vytvořit s novou konfigurací. Pokud existující zdroj používají jiné aplikace nebo komponenty, místo odstranění existujícího zdroje vytvořte nový zdroj s aktualizovanou konfigurací.

Zdroj událostí můžete zaregistrovat s lokalizovanými prostředky pro vaši kategorii událostí a řetězce zpráv. Vaše aplikace může zapisovat položky protokolu událostí pomocí identifikátorů prostředků místo zadávání skutečných řetězcových hodnot. Další informace o konfiguraci zdrojového kódu pomocí souborů prostředků najdete v EventLogInstaller třídách a EventSourceCreationData .

Pokud vaše aplikace zapisuje řetězcové hodnoty přímo do protokolu událostí, nemusíte nastavovat vlastnosti souboru prostředků pro zdroj. Zdroj musí být nakonfigurován pro zápis lokalizovaných položek nebo pro zápis přímých řetězců. Pokud aplikace zapisuje položky pomocí identifikátorů prostředků i řetězcových hodnot, musíte zaregistrovat dva samostatné zdroje. Například nakonfigurujte jeden zdroj se soubory prostředků a pak tento zdroj použijte v WriteEvent metodě k zápisu položek do protokolu událostí pomocí identifikátorů prostředků. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v WriteEntry metodě k zápisu řetězců přímo do protokolu událostí pomocí daného zdroje.

Při zápisu událostí musíte alespoň zadat řetězec zprávy nebo identifikátor prostředku pro řetězec zprávy. Další vlastnosti událostí jsou volitelné. Příklady volitelných nastavení událostí:

  • Můžete nastavit EventLogEntryType a určit ikonu, kterou Prohlížeč událostí zobrazí pro danou položku.

  • Pokud vaše aplikace k filtrování událostí používá kategorie, můžete pro událost zadat identifikátor kategorie.

  • Pokud chcete k dané události přidružit další informace, můžete k položce události připojit binární data.

Důležité

Protokolování událostí spotřebovává místo na disku, čas procesoru a další systémové prostředky. Je důležité protokolovat pouze základní informace. Volání protokolu událostí doporučujeme umístit do chybové cesty, nikoli do hlavní cesty kódu, aby neměla nepříznivý vliv na výkon.

Seznam počátečních hodnot vlastností pro instanci EventLognaleznete v konstruktoru EventLog .

Konstruktory

EventLog()

Inicializuje novou instanci EventLog třídy. Nepřidruží instanci k žádnému protokolu.

EventLog(String)

Inicializuje novou instanci EventLog třídy. Přidruží instanci k protokolu v místním počítači.

EventLog(String, String)

Inicializuje novou instanci EventLog třídy. Přidruží instanci k protokolu v zadaném počítači.

EventLog(String, String, String)

Inicializuje novou instanci EventLog třídy. Přidruží instanci k protokolu na zadaném počítači a vytvoří nebo přiřadí zadaný zdroj k EventLog.

Vlastnosti

CanRaiseEvents

Získá hodnotu označující, zda komponenta může vyvolat událost.

(Zděděno od Component)
Container

Získá objekt IContainer , který obsahuje Component.

(Zděděno od Component)
DesignMode

Získá hodnotu, která označuje, zda je aktuálně v režimu návrhu Component .

(Zděděno od Component)
EnableRaisingEvents

Získá nebo nastaví hodnotu označující, zda EventLog přijímá oznámení o událostech EntryWritten .

Entries

Získá obsah protokolu událostí.

Events

Získá seznam obslužných rutin událostí, které jsou připojeny k tomuto Component.

(Zděděno od Component)
Log

Získá nebo nastaví název protokolu pro čtení nebo zápis do.

LogDisplayName

Získá popisný název protokolu událostí.

MachineName

Získá nebo nastaví název počítače, na kterém se mají číst nebo zapisovat události.

MaximumKilobytes

Získá nebo nastaví maximální velikost protokolu událostí v kilobajtech.

MinimumRetentionDays

Získá počet dnů pro uchování položek v protokolu událostí.

OverflowAction

Získá nakonfigurované chování pro ukládání nových položek, když protokol událostí dosáhne maximální velikosti souboru protokolu.

Site

Získá nebo nastaví ISite hodnotu Component.

(Zděděno od Component)
Source

Získá nebo nastaví název zdroje pro registraci a použití při zápisu do protokolu událostí.

SynchronizingObject

Získá nebo nastaví objekt použitý k zařazování volání obslužné rutiny události vydané jako výsledek zápisu EventLog události.

Metody

BeginInit()

Zahájí inicializaci objektu použitého EventLog ve formuláři nebo používaného jinou komponentou. Inicializace probíhá za běhu.

Clear()

Odebere všechny položky z protokolu událostí.

Close()

Zavře protokol událostí a uvolní popisovače pro čtení a zápis.

CreateEventSource(EventSourceCreationData)

Vytvoří platný zdroj událostí pro zápis zpráv lokalizovaných událostí pomocí zadaných konfiguračních vlastností pro zdroj událostí a odpovídající protokol událostí.

CreateEventSource(String, String)

Vytvoří zadaný název zdroje jako platný zdroj událostí pro zápis položek do protokolu v místním počítači. Tato metoda může také vytvořit nový vlastní protokol v místním počítači.

CreateEventSource(String, String, String)
Zastaralé.
Zastaralé.
Zastaralé.

Vytvoří zadaný název zdroje jako platný zdroj událostí pro zápis položek do protokolu v zadaném počítači. Tuto metodu lze také použít k vytvoření nového vlastního protokolu v zadaném počítači.

CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy používaného ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
Delete(String)

Odebere protokol událostí z místního počítače.

Delete(String, String)

Odebere protokol událostí ze zadaného počítače.

DeleteEventSource(String)

Odebere registraci zdroje událostí z protokolu událostí místního počítače.

DeleteEventSource(String, String)

Odebere registraci zdroje událostí aplikace ze zadaného počítače.

Dispose()

Uvolní všechny prostředky používané nástrojem Component.

(Zděděno od Component)
Dispose(Boolean)

Uvolní nespravované prostředky používané nástrojem EventLoga volitelně uvolní spravované prostředky.

EndInit()

Ukončí inicializaci použitého EventLog ve formuláři nebo jinou komponentou. Inicializace probíhá za běhu.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
Exists(String)

Určuje, zda protokol existuje v místním počítači.

Exists(String, String)

Určuje, zda protokol existuje v zadaném počítači.

GetEventLogs()

Vyhledá všechny protokoly událostí v místním počítači a vytvoří pole EventLog objektů, které obsahují seznam.

GetEventLogs(String)

Vyhledá všechny protokoly událostí v daném počítači a vytvoří pole EventLog objektů, které obsahují seznam.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetLifetimeService()
Zastaralé.

Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetService(Type)

Vrátí objekt, který představuje službu poskytovanou objektem Component nebo jejím Containerobjektem .

(Zděděno od Component)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
InitializeLifetimeService()
Zastaralé.

Získá objekt služby životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
LogNameFromSourceName(String, String)

Získá název protokolu, do kterého je zaregistrovaný zadaný zdroj.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
ModifyOverflowPolicy(OverflowAction, Int32)

Změní nakonfigurované chování pro zápis nových položek, když protokol událostí dosáhne maximální velikosti souboru.

RegisterDisplayName(String, Int64)

Určuje lokalizovaný název protokolu událostí, který se zobrazí na serveru Prohlížeč událostí.

SourceExists(String)

Určuje, zda je zdroj událostí registrován v místním počítači.

SourceExists(String, String)

Určuje, zda je zdroj událostí registrován v zadaném počítači.

ToString()

String Vrátí hodnotu obsahující název Component, pokud existuje. Tato metoda by neměla být přepsána.

(Zděděno od Component)
WriteEntry(String)

Zapíše položku typu informace s daným textem zprávy do protokolu událostí.

WriteEntry(String, EventLogEntryType)

Zapíše chybu, upozornění, informace, úspěšný audit nebo položku auditu selhání s daným textem zprávy do protokolu událostí.

WriteEntry(String, EventLogEntryType, Int32)

Zapíše do protokolu událostí položku s daným textem zprávy a identifikátorem události definovaným aplikací.

WriteEntry(String, EventLogEntryType, Int32, Int16)

Zapíše položku s daným textem zprávy, identifikátorem události definovaným aplikací a kategorií definovanou aplikací do protokolu událostí.

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

Zapíše položku s daným textem zprávy, identifikátorem události definovaným aplikací a kategorií definovanou aplikací do protokolu událostí a připojí ke zprávě binární data.

WriteEntry(String, String)

Zapíše položku typu informace s daným textem zprávy do protokolu událostí pomocí zadaného zaregistrovaného zdroje událostí.

WriteEntry(String, String, EventLogEntryType)

Zapíše chybu, upozornění, informace, úspěšný audit nebo položku auditu selhání s daným textem zprávy do protokolu událostí pomocí zadaného zaregistrovaného zdroje událostí.

WriteEntry(String, String, EventLogEntryType, Int32)

Zapíše položku s daným textem zprávy a identifikátorem události definovanou aplikací do protokolu událostí pomocí zadaného zaregistrovaného zdroje událostí.

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

Zapíše položku s daným textem zprávy, identifikátorem události definovaným aplikací a kategorií definovanou aplikací do protokolu událostí pomocí zadaného registrovaného zdroje událostí. Prohlížeč událostí category může použít k filtrování událostí v protokolu.

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

Zapíše položku s daným textem zprávy, identifikátorem události definovaným aplikací a kategorií definovanou aplikací do protokolu událostí (pomocí zadaného zaregistrovaného zdroje událostí) a připojí ke zprávě binární data.

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

Zapíše položku protokolu událostí s danými daty události, náhradními řetězci zpráv a přidruženými binárními daty.

WriteEvent(EventInstance, Object[])

Zapíše lokalizovanou položku do protokolu událostí.

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

Zapíše položku protokolu událostí s danými daty události, náhradními řetězci zpráv a přidruženými binárními daty a pomocí zadaného registrovaného zdroje událostí.

WriteEvent(String, EventInstance, Object[])

Zapíše položku protokolu událostí s danými daty událostí a řetězci pro nahrazení zprávy pomocí zadaného registrovaného zdroje událostí.

Událost

Disposed

Nastane, když je komponenta odstraněna voláním Dispose() metody.

(Zděděno od Component)
EntryWritten

Nastane, když je záznam zapsán do protokolu událostí v místním počítači.

Platí pro

Viz také