EventLog Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 MyNewLog
udá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 nebo jejich přizpůsobení, které zaznamenávají informace o důležitých softwarových nebo hardwarových událostech. 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 reagovat na položky protokolu. Nové protokoly můžete vytvořit také při vytváření zdroje událostí.
Důležité
Tento typ implementuje IDisposable rozhraní . Až s použitím typu skončíte, měli byste ho odstranit přímo nebo nepřímo. Chcete-li odstranit typ přímo, zavolejte jeho Dispose metodu try
/catch
v bloku. Pokud ho chcete odstranit nepřímo, použijte konstruktor jazyka, jako using
je (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ě toho, že poskytuje přístup k jednotlivým protokolům událostí a jejich položkám, EventLog 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 konkrétní 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é instalujete, například Active Directory.
Při použití EventLog třídy existují důležité aspekty zabezpečení. 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. Nikdy byste neměli předávat žádný objekt protokolu událostí, včetně EventLogEntryCollection objektů a EventLogEntry , 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í v názvu jiné aplikace.
Počínaje systémem Windows Vista určuje řízení uživatelských účtů 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ň přihlašovacích údajů ze standardního uživatele na správce. Když spustíte aplikaci, můžete to udělat 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č událostí serveru. Použijte metodu RegisterDisplayName k zobrazení lokalizovaného názvu 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álosti (Source vlastnost) není nutné zadávat, protože zdroj se vyžaduje 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álosti (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 v protokolu událostí jako platný zdroj záznamů. 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. Při pokusu o vytvoření duplicitní Source hodnoty dojde k výjimce. Jeden protokol událostí však 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 ten, že všechny protokoly událostí, včetně protokolů zabezpečení, musí být prohledány, aby se zjistilo, jestli je zdroj událostí jedinečný. Počínaje systémem Windows Vista nemají uživatelé oprávnění k přístupu 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 nebude zámek uvolněn. Pokud chcete tomuto problému předejít, nikdy neudělujte UnmanagedCode oprávnění k nedůvěryhodnému kódu. Oprávnění navíc UnmanagedCode potenciálně umožňuje obejít další oprávnění a mělo by se udělovat 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 chránilo aplikaci 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 . Je nutné zadat zdroj událostí pro zápis událostí; Před zápisem první položky do zdroje musíte vytvořit a nakonfigurovat zdroj událostí.
Create nový zdroj událostí 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. 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 zdroje se soubory 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 pro zdroj nastavovat vlastnosti souboru prostředků. Zdroj musí být nakonfigurován 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 ho WriteEvent použijte v metodě 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 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álosti jsou volitelné. Mezi příklady volitelných nastavení událostí patří:
Můžete nastavit EventLogEntryType tak, aby se určila ikona, 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. Doporučujeme umístit volání protokolu událostí 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 EventLognástroje najdete 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 v 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 číst nebo zapisovat do. |
LogDisplayName |
Získá popisný název protokolu událostí. |
MachineName |
Získá nebo nastaví název počítače, na kterém čí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 z 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áznamu zapsané EventLog události. |
Metody
BeginInit() |
Začíná inicializace 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 lokalizovaných zpráv událostí pomocí zadaných vlastností konfigurace 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 sloužící 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 z 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 objektů obsahujících EventLog 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 aktuální životnost objektu služby, 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 .Container (Zděděno od Component) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
InitializeLifetimeService() |
Zastaralé.
Získá životnost objektu služby, 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 registrován 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 , Componentpokud 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 položku s daným textem zprávy a identifikátorem události definovaným aplikací do protokolu událostí. |
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 registrované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 registrovaného zdroje událostí. |
WriteEntry(String, String, EventLogEntryType, Int32) |
Zapíše položku s daným textem zprávy a identifikátorem události definovaným aplikací do protokolu událostí pomocí zadaného registrované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í |
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, řetězci pro nahrazení zprávy 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álosti a náhradními řetězci zpráv pomocí zadaného registrovaného zdroje událostí. |
Událost
Disposed |
Vyvolá se, když je komponenta uvolněna voláním Dispose() metody . (Zděděno od Component) |
EntryWritten |
Vyvolá se při zápisu položky do protokolu událostí v místním počítači. |