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

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

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

8 ответов


попробовать "eventcreate.EXE-файл"

пример:

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

это создаст новое событие источник имени MYEVENTSOURCE под APPLICATION событие log as INFORMATION событие тип.

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

более дальнеишее чтение


попробуйте командлеты журнала событий 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
    

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

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

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

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


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


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

Eventcreate


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

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


однако версия cmd / batch работает, вы можете столкнуться с проблемой, когда хотите определить eventID, который выше 1000. Для создания событий с eventID 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)

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

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

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

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