Как создать исходный код Windows EventLog из командной строки? - PullRequest
158 голосов
/ 15 января 2009

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

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

Ответы [ 8 ]

287 голосов
/ 24 июня 2009

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

Пример:

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

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

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

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

169 голосов
/ 23 августа 2011

Попробуйте командлеты EventLog PowerShell 2.0

Добавьте это для 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
    
42 голосов
/ 20 февраля 2010

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

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

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

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

11 голосов
/ 06 октября 2009

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

4 голосов
/ 26 ноября 2015

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

Сохраните следующие строки как файл .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.

1 голос
/ 10 сентября 2015

Однако версия cmd / batch работает, но вы можете столкнуться с проблемой, если захотите определить идентификатор события, превышающий 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)
1 голос
/ 22 мая 2009

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

Eventcreate

0 голосов
/ 31 мая 2014

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

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

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

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

...