Bagaimana cara membuat sumber Windows EventLog dari baris perintah?


166

Saya membuat aplikasi ASP.NET yang akan mencatat beberapa hal ke Windows EventLog. Untuk melakukan ini, sumber acara harus dibuat terlebih dahulu. Ini memerlukan hak administratif sehingga saya tidak dapat melakukannya di aplikasi ASP.NET.

Apakah ada aplikasi baris perintah yang ada yang dibundel dengan Windows yang dapat membuat sumber log peristiwa, atau haruskah saya meluncurkan sendiri?

Jawaban:


298

Coba "eventcreate.exe"

Sebuah contoh:

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

Ini akan membuat sumber acara baru bernama di MYEVENTSOURCEbawah logAPPLICATION peristiwa sebagai INFORMATIONevent jenis .

Saya pikir utilitas ini hanya disertakan dari XP dan seterusnya.

Bacaan lebih lanjut


13
Anda harus mengklik kanan pada "cmd" dan memilih "jalankan sebagai admin" dari vista on
Ian Ringrose

16
eventcreate mencatat suatu peristiwa di bawah sumber yang ada, itu tidak akan membuat sumber baru dari awal seperti OP diminta.
Paul Chavez

5
@ PaulChavez jika sumber bernama tidak ada, itu dibuat.
Farinha

1
Ini tidak akan membuat acara jika MYEVENTSOURCEsudah ada dan dibuat menggunakan sesuatu selain eventcreate
Chris S

2
sementara ini bekerja dan menciptakan sumber baru semua acara saya semua memiliki "Deskripsi untuk ID Peristiwa 0 dari sumber myApp tidak dapat ditemukan. Entah komponen yang menimbulkan peristiwa ini tidak diinstal pada komputer lokal Anda atau instalasi rusak" jadi saya punya untuk mengedit registri pada akhirnya
dibs487

176

Coba cmdlet EventLog PowerShell 2.0

Melemparkan ini untuk PowerShell 2.0 dan ke atas:

  • Jalankan New-EventLogsekali untuk mendaftarkan sumber acara:

    New-EventLog -LogName Application -Source MyApp
    
  • Kemudian gunakan Write-EventLoguntuk menulis ke log:

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

7
Ini berfungsi dengan baik, hanya ingat untuk menjalankan PowerShell dengan hak istimewa yang ditinggikan.
Rod

4
Saya harus membuka dan menutup penampil acara untuk melihat log baru yang saya buat
amackay11

Juga jika Anda secara aktif mengembangkan dan New-EventLog-ing dan Remove-EventLog'-ing bolak-balik Anda mungkin mengalami masalah ketika Sourceterdaftar tetapi tidak menulis untuk ditentukan Log. Restart komputer membantu dengan itu. Kiat lain: Anda dapat melihat apa yang terjadi dengan log peristiwa Anda dengan regedit di sini:[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
Corio

45

Anda juga dapat menggunakan Windows PowerShell dengan perintah berikut:

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

Pastikan untuk memeriksa bahwa sumbernya tidak ada sebelum memanggil CreateEventSource, jika tidak maka akan menimbulkan pengecualian.

Untuk info lebih lanjut:



4

Jika seseorang tertarik, Anda juga dapat membuat sumber acara secara manual dengan menambahkan beberapa nilai registri.

Simpan baris berikut sebagai file .reg, lalu impor ke registri dengan mengklik dua kali:

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

Ini menciptakan sumber acara bernama YOUR_EVENT_SOURCE_NAME_GOES_HERE.


1

Atau cukup gunakan perintah baris perintah:

Buat acara


1

Namun versi cmd / batch berfungsi, Anda dapat mengalami masalah ketika Anda ingin mendefinisikan eventID yang lebih tinggi dari 1000. Untuk pembuatan acara dengan eventID 1000+ saya akan menggunakan PowerShell seperti ini:

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

Sampel:

$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

Anda dapat membuat acara kustom Anda sendiri dengan menggunakan diagnosa. Acara kelas log. Buka aplikasi windows dan klik tombol lakukan kode berikut.

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

"MyNewLog" berarti nama yang ingin Anda berikan kepada penampil acara masuk Anda.

untuk informasi lebih lanjut, periksa tautan ini [ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.