Как создать источник событий 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]