webentwicklung-frage-antwort-db.com.de

Wie erstelle ich eine Windows EventLog-Quelle über die Befehlszeile?

Ich erstelle eine ASP.NET-Anwendung, die einige Daten in Windows EventLog protokolliert. Dazu muss zuerst eine Ereignisquelle erstellt werden. Dies erfordert Administratorrechte, sodass ich dies in der ASP.NET-App nicht ausführen kann.

Gibt es eine vorhandene Befehlszeilenanwendung, die im Lieferumfang von Windows enthalten ist und eine Ereignisprotokollquelle erstellen kann, oder muss ich eine eigene ausrollen?

159
Vilx-

Versuchen Sie "eventcreate.exe"

Ein Beispiel:

eventcreate /ID 1 /L APPLICATION /T INFORMATION  /SO MYEVENTSOURCE /D "My first log"

Dadurch wird ein neues Ereignis als Quelle mit dem Namen MYEVENTSOURCE unter dem Ereignisprotokoll APPLICATION erstellt als INFORMATION Ereignis Typ .

Ich denke, dass dieses Dienstprogramm nur von XP ab enthalten ist.

Weitere Lektüre

288
MSV Muthu

Probieren Sie die EventLog-Cmdlets von PowerShell 2.0 aus

Werfen Sie dies für PowerShell 2.0 und höher:

  • Lauf New-EventLog einmal, um die Ereignisquelle zu registrieren:

    New-EventLog -LogName Application -Source MyApp
    
  • Dann benutze Write-EventLog um ins Log zu schreiben:

    Write-EventLog 
        -LogName Application 
        -Source MyApp 
        -EntryType Error 
        -Message "Immunity to iocaine powder not detected, dying now" 
        -EventId 1
    
171
roufamatic

Sie können Windows PowerShell auch mit dem folgenden Befehl verwenden:

if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
    [System.Diagnostics.EventLog]::CreateEventSource($source, "Application")
}

Stellen Sie sicher, dass die Quelle nicht vorhanden ist, bevor Sie CreateEventSource aufrufen. Andernfalls wird eine Ausnahme ausgelöst.

Für mehr Information:

42
Luis Rocha

eventcreate2 ermöglicht Ihnen, benutzerdefinierte Protokolle zu erstellen, wobei eventcreate dies nicht tut.

11
Nick Bolton

Bei Interesse kann eine Ereignisquelle auch manuell erstellt werden, indem einige Registrierungswerte hinzugefügt werden.

Speichern Sie die folgenden Zeilen als .reg-Datei und importieren Sie sie in die Registrierung, indem Sie darauf doppelklicken:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\YOUR_EVENT_SOURCE_NAME_GOES_HERE]
"EventMessageFile"="C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\EventLogMessages.dll"
"TypesSupported"=dword:00000007

Dadurch wird eine Ereignisquelle mit dem Namen YOUR_EVENT_SOURCE_NAME_GOES_HERE Erstellt.

4
CSharper

Oder verwenden Sie einfach den Befehlszeilenbefehl:

Event erstellen

1
user111179

Die cmd/batch-Version funktioniert jedoch. Sie können auf ein Problem stoßen, wenn Sie eine Ereignis-ID definieren möchten, die höher als 1000 ist.

$evt=new-object System.Diagnostics.Eventlog(“Define Logbook”)
$evt.Source=”Define Source”
$evtNumber=Define Eventnumber
$evtDescription=”Define description”
$infoevent=[System.Diagnostics.EventLogEntryType]::Define error level
$evt.WriteEntry($evtDescription,$infoevent,$evtNumber) 

Probe:

$evt=new-object System.Diagnostics.Eventlog(“System”)
$evt.Source=”Tcpip”
$evtNumber=4227
$evtDescription=”This is a Test Event”
$infoevent=[System.Diagnostics.EventLogEntryType]::Warning
$evt.WriteEntry($evtDescription,$infoevent,$evtNumber)
1
R. Tettero