Как создать источник событий Windows EventLog из командной строки?

Я создаю приложение ASP.NET, которое будет записывать некоторые вещи в Windows EventLog. Для этого сначала необходимо создать источник события. Для этого требуются административные привилегии, поэтому я не могу сделать это в приложении ASP.NET.

Есть ли существующее приложение из командной строки, которое поставляется вместе с Windows, которое может создать источник журнала событий, или я должен использовать собственный?

Ответ 1

Попробуйте "eventcreate.exe"

Пример:

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

Это создаст новый источник событий с именем MYEVENTSOURCE в APPLICATION журнале событий как INFORMATION тип события.

Я думаю, что эта утилита включена только с XP.

Дальнейшее чтение

Ответ 2

Попробуйте PowerShell 2.0 EventLog cmdlets

Включение этого параметра для PowerShell 2.0 и выше:

  • Запустите New-EventLog один раз, чтобы зарегистрировать источник события:

    New-EventLog -LogName Application -Source MyApp
    
  • Затем используйте Write-EventLog для записи в журнал:

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

Ответ 3

Вы также можете использовать Windows PowerShell со следующей командой:

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

Убедитесь, что источник не существует до вызова CreateEventSource, иначе он выдает исключение.

Для получения дополнительной информации:

Ответ 4

eventcreate2 позволяет создавать собственные журналы, где eventcreate не работает.

Ответ 5

Или просто используйте команду командной строки:

Eventcreate

Ответ 6

Если кому-то интересно, также можно создать источник события вручную, добавив некоторые значения реестра.

Сохраните следующие строки как .reg файл, затем импортируйте его в реестр, дважды щелкнув по нему:

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

Это создает источник события с именем YOUR_EVENT_SOURCE_NAME_GOES_HERE.

Ответ 7

Однако версия cmd/batch работает, вы можете столкнуться с проблемой, когда хотите определить eventID, который выше 1000. Для создания события с идентификатором события 1000+ я буду использовать powershell следующим образом:

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

Пример:

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

Ответ 8

вы можете создать собственное пользовательское событие, используя класс диагностики .Event. Откройте приложение Windows и нажмите кнопку, чтобы сделать следующий код.

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

"MyNewLog" означает имя, которое вы хотите предоставить вашему журналу просмотра событий.

для получения дополнительной информации проверьте эту ссылку [http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs .90%29.aspx]