Sdílet prostřednictvím


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álostí, pokud ještě neexistuje, a zapíše položku do protokolu MyNewLogudálostí .

Poznámka:

Tuto aplikaci musíte spustit jako správce.

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 nebo jejich přizpůsobení, které zaznamenávají informace o důležitých událostech softwaru nebo hardwaru. Pomocí EventLog, můžete číst z existujících protokolů, zapisovat položky do protokolů, vytvářet nebo odstraňovat zdroje událostí, odstranit protokoly a reagovat na položky protokolu. Při vytváření zdroje událostí můžete také vytvořit nové protokoly.

Důležité

Tento typ implementuje rozhraní IDisposable. Jakmile skončíte s používáním typu, měli byste ho odstranit buď přímo, nebo nepřímo. Chcete-li typ odstranit přímo, zavolejte jeho Dispose metodu v bloku try/catch. Pokud ho chcete zlikvidovat nepřímo, použijte konstruktor jazyka, jako je using (v jazyce C#) nebo Using (v jazyce Visual Basic). Další informace naleznete 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 záznamům EventLog umožňuje třída přístup k kolekci všech protokolů událostí. Pomocí členů EventLog můžete static odstranit protokoly, získat seznamy protokolů, vytvořit nebo odstranit zdroj nebo určit, jestli počítač již obsahuje konkrétní zdroj.

Existují tři výchozí protokoly událostí: aplikace, systém a zabezpečení. Protokol zabezpečení je jen pro čtení. Jiné aplikace a služby, které instalujete, například Active Directory, můžou obsahovat další protokoly událostí.

Při používání EventLog třídy existují důležité informace o zabezpečení. EventLog vyžaduje EventLogPermission oprávnění pro konkrétní akce. Doporučujeme nepovolit EventLogPermission částečně důvěryhodný kód. Do méně důvěryhodného kódu byste nikdy neměli předávat žádný objekt protokolu událostí, včetně EventLogEntryCollection objektů EventLogEntry . Například vytvoření objektu EventLog , zápis položky a následné předání EventLog objektu částečně důvěryhodnému 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í v názvu 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řazené dva přístupové tokeny za běhu: standardní přístupový token uživatele a přístupový token správce. Ve výchozím nastavení jste ve standardní roli uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění od standardního uživatele na správce. Můžete to udělat, když spustíte aplikaci 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 spustit jako správce.

Můžete použít EventLog k vytvoření vlastních protokolů událostí, které můžete zobrazit prostřednictvím prohlížeče událostí serveru. Použijte metodu RegisterDisplayName k zobrazení lokalizovaného názvu pro protokol událostí v Prohlížeči událostí. Použijte metodu ModifyOverflowPolicy ke konfiguraci 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 protokolu událostí). Pokud nezadáte název počítače serveru, předpokládá se místní počítač , ".". Není nutné zadat zdroj událostí (Source vlastnost), protože zdroj je vyžadován pouze 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 vaši aplikaci v protokolu událostí jako platný zdroj položek. Zdroj událostí můžete použít k zápisu do pouze 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. Zdroj událostí je obvykle název aplikace nebo jiný identifikační řetězec. Při pokusu o vytvoření duplicitní Source hodnoty dojde k výjimce. 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í. Chcete-li vytvořit zdroj událostí v systému Windows Vista a novější nebo Windows Server 2003, musíte mít přihlašovací údaje správce.

Tento požadavek je způsoben tím, že je nutné vyhledat všechny protokoly událostí, včetně protokolů zabezpečení, aby bylo možné určit, jestli je zdroj událostí jedinečný. Počínaje systémem Windows Vista nemají uživatelé 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 vysoce privilegovaná aplikace uzamkne pojmenovaný mutex, pokus o vytvoření nebo odstranění zdroje událostí způsobí, že aplikace přestane reagovat, dokud se zámek nevolní. Chcete-li zabránit tomuto problému, nikdy neudělte UnmanagedCode oprávnění nedůvěryhodnému kódu. Kromě toho UnmanagedCode oprávnění potenciálně umožňují 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 protokolu aplikace 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í do protokolu aplikace.

Poznámka:

Aplikaci není potřeba chránit před zápisem jako jakéhokoli registrovaného zdroje. 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 metody. 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í.

Během instalace aplikace vytvořte nový zdroj událostí. Díky tomu může operační systém aktualizovat seznam registrovaných zdrojů událostí a jejich konfigurace. 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 najednou zapisovat pouze do jednoho protokolu událostí; Aplikace ale 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 pomocí nové konfigurace. Pokud existující zdroj používají jiné aplikace nebo komponenty, vytvořte nový zdroj s aktualizovanou konfigurací místo odstranění existujícího zdroje.

Zdroj událostí můžete zaregistrovat v lokalizovaných prostředcích pro kategorii událostí a řetězce zpráv. 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. EventLogInstaller Další informace o konfiguraci zdroje pomocí souborů prostředků najdete v tématu a EventSourceCreationData třídách.

Pokud vaše aplikace zapisuje řetězcové hodnoty přímo do protokolu událostí, nemusíte pro zdroj nastavovat vlastnosti souboru prostředků. Zdroj musí být nakonfigurován buď pro zápis lokalizovaných položek, nebo pro zápis přímých řetězců. Pokud vaše 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 v WriteEvent metodě použijte k zápisu položek pomocí identifikátorů prostředků do protokolu událostí. 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 psaní událostí musíte alespoň zadat řetězec zprávy nebo identifikátor prostředku pro řetězec zprávy. Jiné vlastnosti události jsou volitelné. Příklady volitelných nastavení událostí zahrnují následující:

  • Můžete nastavit EventLogEntryType , aby se pro danou položku zobrazila ikona prohlížeče událostí.

  • Identifikátor kategorie události můžete zadat, pokud vaše aplikace používá kategorie pro filtrování událostí.

  • 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. Doporučujeme, abyste místo do hlavní cesty kódu umístili volání protokolu událostí do cesty k chybě, takže nemají nepříznivý vliv na výkon.

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

Konstruktory

Name Description
EventLog()

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

EventLog(String, String, String)

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

EventLog(String, String)

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

EventLog(String)

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

Vlastnosti

Name Description
CanRaiseEvents

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

(Zděděno od Component)
Container

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

(Zděděno od Component)
DesignMode

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

(Zděděno od Component)
EnableRaisingEvents

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

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

Tato vlastnost je zastaralá.

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 .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é v důsledku záznamu zapsané EventLog události.

Metody

Name Description
BeginInit()

Zahájí inicializaci použitého EventLog formuláře 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í obslužné rutiny pro čtení a zápis.

CreateEventSource(EventSourceCreationData)

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

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.

CreateEventSource(String, String)

Vytvoří zadaný název zdroje jako platný zdroj události 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.

CreateObjRef(Type)

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

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

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

Delete(String)

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

DeleteEventSource(String, String)

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

DeleteEventSource(String)

Odebere registraci zdroje událostí z protokolu událostí místní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é EventLognástrojem a 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čuje, zda je zadaný objekt roven aktuálnímu objektu.

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

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

Exists(String)

Určuje, zda protokol existuje v místní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í funkce hash.

(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 jeho Container.

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

Získá Type aktuální instance.

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

Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci.

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

Získá název protokolu, ke kterému je zadaný zdroj registrován.

MemberwiseClone()

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

(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í při zápisu 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í v prohlížeči událostí serveru.

SourceExists(String, String)

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

SourceExists(String)

Určuje, zda je zdroj událostí registrován v místní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, 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í do zprávy binární data.

WriteEntry(String, EventLogEntryType, Int32, Int16)

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

WriteEntry(String, EventLogEntryType, Int32)

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

WriteEntry(String, EventLogEntryType)

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

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 registrovaného zdroje událostí) a připojí do zprávy binární data.

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

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

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 registrovaného zdroje událostí.

WriteEntry(String, String, EventLogEntryType)

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

WriteEntry(String, String)

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

WriteEntry(String)

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

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

Zapíše položku protokolu událostí s danými daty události, řetězci nahrazení 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, řetězci nahrazení 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álosti a řetězci pro nahrazení zpráv pomocí zadaného registrovaného zdroje událostí.

Událost

Name Description
Disposed

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

(Zděděno od Component)
EntryWritten

Nastane, když je položka zapsána do protokolu událostí v místním počítači.

Platí pro

Viz také