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?

Vilx-
źródło

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

MSV Muthu
źródło
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
    
roufamatic
źródło
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:

Luis Rocha
źródło
12

eventcreate2 umożliwia tworzenie niestandardowych dzienników, podczas gdy eventcreate tego nie robi.

Nick Bolton
źródło
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.

CSharper
źródło
1

Lub po prostu użyj polecenia wiersza poleceń:

Eventcreate


źródło
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)
R. Tettero
źródło
-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]

3333
źródło