Як створити джерело Windows EventLog з командного рядка?


166

Я створюю додаток ASP.NET, який записуватиме деякі речі до Windows EventLog. Для цього потрібно створити перше джерело події. Для цього потрібні адміністративні права, тому я не можу це зробити в додатку ASP.NET.

Чи існує в програмі Windows додаток командного рядка, який може створити джерело журналу подій, або я повинен розгорнути свій власний?

Відповіді:


298

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

Приклад:

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

Це дозволить створити нову подію джерело імені MYEVENTSOURCEпід APPLICATIONподіями журналу , як INFORMATIONподія типу .

Я думаю, що ця утиліта включена лише з XP.

Подальше читання


13
ви повинні клацнути правою кнопкою миші на "cmd" і вибрати "запустити як адміністратора" від Vista на
Ян Рінроуз

16
eventcreate записує подію під існуючим джерелом, вона не створить нове джерело з нуля, як вимагає ОП
Пол Чавес

5
@PaulChavez, якщо названого джерела не існує, він створюється.
Фарінья

1
Це не створить подію, якщо вона MYEVENTSOURCEвже існує та створена за допомогою чогось іншого, ніж eventcreate
Chris S,

2
в той час як це спрацювало і створило нове джерело, у всіх моїх подіях було "Опис ідентифікатора події 0 від джерела myApp неможливо знайти. Або компонент, який викликає цю подію, не встановлений на вашому локальному комп'ютері, або установка пошкоджена", тому у мене був редагувати реєстр врешті-решт
dibs487

176

Спробуйте командлети PowerShell 2.0's EventLog

Вказавши це для 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
    

7
Це прекрасно працює, просто пам’ятайте про запуск PowerShell з підвищеними привілеями.
Прут

4
Мені довелося відкривати і закривати глядача подій, щоб побачити новий журнал, який я створив
amackay11

Крім того, якщо ви активно розвиваєте та New-EventLog-ing і Remove-EventLog'-ing назад і вперед, ви можете зіткнутися з проблемою, коли Sourceзареєстрований, але не пише в зазначеному Log. Перезавантаження комп'ютера допомагає в цьому. Ще одна порада: ви можете побачити, що відбувається з вашими журналами подій з regedit тут:[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
Корио

44

Ви також можете використовувати Windows PowerShell за допомогою наступної команди:

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

Переконайтесь, що переконайтесь, що джерело не існує, перш ніж викликати CreateEventSource, інакше воно викине виняток.

Для отримання додаткової інформації:



4

Якщо хтось зацікавлений, також можна створити джерело подій вручну, додавши деякі значення реєстру.

Збережіть такі рядки як .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

Або просто скористайтеся командою командного рядка:

Створіть події


1

Однак версія cmd / batch працює, ви можете зіткнутися з проблемою, коли ви хочете визначити eventID, який перевищує 1000. Для створення події з eventID 1000+ я буду використовувати командний шкала, як це:

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

-3

ви можете створити власну власну подію за допомогою діагностики. Клас журналу журналу. Відкрийте програму Windows і натисніть кнопку, зробіть наступний код.

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

"MyNewLog" означає ім'я, яке ви хочете вказати своєму журналі в системі перегляду подій.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.