Jak utworzyć źródło EventLog systemu Windows z wiersza poleceń?


166

Tworzę aplikację ASP.NET, która będzie rejestrować pewne rzeczy w dzienniku zdarzeń systemu Windows. Aby to zrobić, najpierw należy utworzyć źródło zdarzenia. Wymaga to uprawnień administratora, więc nie mogę tego zrobić w aplikacji ASP.NET.

Czy istnieje aplikacja wiersza polecenia dołączona do systemu Windows, która może tworzyć źródło dziennika zdarzeń, czy też muszę wdrożyć własne?

Odpowiedzi:


298

Spróbuj „eventcreate.exe”

Przykład:

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

Spowoduje to utworzenie nowego zdarzenia źródło o nazwie MYEVENTSOURCEpod APPLICATIONzdarzeń dziennika jako INFORMATIONzdarzenie typu .

Myślę, że to narzędzie jest dołączone tylko od XP.

Dalsza lektura


13
musisz kliknąć prawym przyciskiem myszy na „cmd” i wybrać „Uruchom jako administrator” z Vista na
— Ian Ringrose,

16
eventcreate rejestruje zdarzenie w istniejącym źródle, nie utworzy nowego źródła od podstaw, zgodnie z żądaniem PO.
— Paul Chavez

5
@PaulChavez, jeśli wymienione źródło nie istnieje, zostanie utworzone.
— Farinha

1
Nie spowoduje to utworzenia wydarzenia, jeśli MYEVENTSOURCEjuż istnieje i zostało utworzone przy użyciu czegoś innego niż eventcreate
— Chris S

2
podczas gdy to zadziałało i utworzyło nowe źródło, wszystkie moje zdarzenia miały „Nie można znaleźć opisu zdarzenia o identyfikatorze 0 ze źródła myApp. Albo składnik wywołujący to zdarzenie nie jest zainstalowany na komputerze lokalnym albo instalacja jest uszkodzona”. aby ostatecznie edytować rejestr
— dibs487

176

Wypróbuj polecenia cmdlet EventLog programu PowerShell 2,0

Wrzucam to dla PowerShell 2.0 i nowszych:

  • Uruchom New-EventLograz, aby zarejestrować źródło zdarzenia:

    New-EventLog -LogName Application -Source MyApp
    
  • Następnie użyj, Write-EventLogaby zapisać do dziennika:

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

7
Działa to dobrze, pamiętaj tylko, aby uruchomić PowerShell z podwyższonymi uprawnieniami.
— Rod

4
Musiałem otworzyć i zamknąć przeglądarkę wydarzeń, aby zobaczyć nowy dziennik, który utworzyłem
— amackay11

Także, jeśli są aktywnie rozwija i New-EventLog-ing i Remove-EventLog„-ing iz powrotem można napotkać problem, gdy Sourcejest zarejestrowany, ale nie pisać na podany Log. Ponowne uruchomienie komputera pomaga w tym. Kolejna wskazówka: możesz zobaczyć, co dzieje się z Twoimi dziennikami zdarzeń w regedit tutaj:[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
— Corio,

44

Możesz również użyć programu Windows PowerShell za pomocą następującego polecenia:

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

Przed wywołaniem CreateEventSource sprawdź, czy źródło nie istnieje, w przeciwnym razie zgłosi wyjątek.

Po więcej informacji:



4

Jeśli ktoś jest zainteresowany, możliwe jest również ręczne utworzenie źródła zdarzeń poprzez dodanie niektórych wartości rejestru.

Zapisz następujące wiersze jako plik .reg, a następnie zaimportuj go do rejestru, klikając go dwukrotnie:

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

Spowoduje to utworzenie źródła zdarzenia o nazwie YOUR_EVENT_SOURCE_NAME_GOES_HERE.


1

Lub po prostu użyj polecenia wiersza poleceń:

Eventcreate


1

Jednak wersja cmd / batch działa, możesz napotkać problem, gdy chcesz zdefiniować eventID, który jest większy niż 1000. Do tworzenia zdarzeń z eventID 1000+ użyję PowerShell w następujący sposób:

$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) 

Próba:

$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)

-3

możesz utworzyć własne zdarzenie niestandardowe za pomocą klasy dziennika diagnostics.Event. Otwórz aplikację Windows i kliknij przycisk, aby wykonać następujący kod.

System.Diagnostics.EventLog.CreateEventSource("ApplicationName", "MyNewLog");

„MyNewLog” oznacza nazwę, którą chcesz nadać swojej przeglądarce zdarzeń logowania.

więcej informacji znajdziesz pod tym linkiem [ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.