Komut satırından Windows EventLog kaynağı nasıl oluşturulur?


166

Windows EventLog'a bazı şeyler kaydedecek bir ASP.NET uygulaması oluşturuyorum. Bunun için önce bir olay kaynağı oluşturulmalıdır. Bu ASP.NET uygulamasında yapamam yönetici ayrıcalıkları gerektirir.

Windows ile birlikte gelen ve bir olay günlüğü kaynağı oluşturabilecek varolan bir komut satırı uygulaması var mı yoksa kendiminkini mi açmalıyım?

Yanıtlar:


298

"Eventcreate.exe" dosyasını deneyin

Bir örnek:

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

Bu yeni bir olay yaratacak kaynağı adında MYEVENTSOURCEaltında APPLICATIONolay günlüğüne olarak INFORMATIONolay türü .

Bu yardımcı programın yalnızca XP'den itibaren olduğunu düşünüyorum.

daha fazla okuma


13
"cmd" yi sağ tıklamanız ve manzaradan "yönetici olarak çalıştır" ı seçmeniz gerekir
Ian Ringrose

16
eventcreate, mevcut bir kaynak altında bir olay kaydeder, OP'nin istediği gibi sıfırdan yeni bir kaynak oluşturmaz.
Paul Chavez

5
@PaulChavez Eğer adlandırılmış kaynak yoksa, oluşturulur.
Farinha

1
Bu MYEVENTSOURCEzaten varsa ve eventcreate dışında bir şey kullanılarak oluşturulmuşsa etkinliği oluşturmaz
Chris S

2
Bu işe yaradı ve yeni bir kaynak oluştururken tüm etkinliklerim "Kaynak myApp kaynağından Olay Kimliği 0 açıklaması bulunamadı. Ya bu olayı yükselten bileşen yerel bilgisayarınızda yüklü değil veya yükleme bozuk" kayıt düzenlemek için nasıl
dibs487 11:16

176

PowerShell 2.0'ın EventLog cmdlet'lerini deneyin

PowerShell 2.0 ve üstü için bunu atmak:

  • New-EventLogEtkinlik kaynağını kaydetmek için bir kez çalıştırın :

    New-EventLog -LogName Application -Source MyApp
    
  • Sonra Write-EventLoggünlüğe yazmak için kullanın :

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

7
Bu iyi çalışıyor, sadece PowerShell'i yükseltilmiş ayrıcalıklarla çalıştırmayı unutmayın.
Çubuk

4
Oluşturduğum yeni günlüğü görmek için etkinlik görüntüleyiciyi açıp kapatmam gerekiyordu
amackay11

Ayrıca, aktif olarak geliştiriyor ve devam ediyorsanız New-EventLogve Remove-EventLogtekrar tekrar kayıt yaptırıyorsanız Source, ancak belirtilemediğinde bir sorunla karşılaşabilirsiniz Log. Bilgisayarı yeniden başlatmak buna yardımcı olur. Başka bir ipucu: Burada regedit ile olay günlüklerinizde neler olduğunu görebilirsiniz :[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
Corio

45

Windows PowerShell'i aşağıdaki komutla da kullanabilirsiniz:

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

CreateEventSource'u çağırmadan önce kaynağın mevcut olmadığından emin olun, aksi takdirde bir istisna atar.

Daha fazla bilgi için:



4

Birisi ilgileniyorsa, bazı kayıt defteri değerleri ekleyerek el ile bir olay kaynağı oluşturmak da mümkündür.

Aşağıdaki satırları bir .reg dosyası olarak kaydedin, ardından çift tıklatarak kayıt defterine alın:

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

Bu, adlı bir olay kaynağı oluşturur YOUR_EVENT_SOURCE_NAME_GOES_HERE.


1

Veya sadece komut satırı komutunu kullanın:

eventcreate


1

Ancak cmd / batch sürümü 1000'den yüksek bir eventID tanımlamak istediğinizde bir sorunla karşılaşabilirsiniz. 1000+ eventID ile olay oluşturma için bu gibi powershell kullanacağım:

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

Örneklem:

$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

diagnostics.Event log sınıfını kullanarak kendi özel etkinliğinizi oluşturabilirsiniz. Bir Windows uygulaması açın ve bir düğmeye tıklayarak aşağıdaki kodu yapın.

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

"MyNewLog", olay görüntüleyicide günlüğünüze vermek istediğiniz ad anlamına gelir.

daha fazla bilgi için bu bağlantıyı kontrol edin [ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.