कमांड लाइन से Windows EventLog स्रोत कैसे बनाएं?


166

मैं एक ASP.NET एप्लिकेशन बना रहा हूँ जो Windows EventLog में कुछ सामान लॉग करेगा। ऐसा करने के लिए एक इवेंट सोर्स पहले बनाना होगा। इसके लिए प्रशासनिक निजीकरण की आवश्यकता होती है इसलिए मैं इसे ASP.NET ऐप में नहीं कर सकता।

क्या एक मौजूदा कमांड-लाइन एप्लिकेशन है जो विंडोज के साथ बंडल है जो एक इवेंट लॉग स्रोत बना सकता है, या मुझे अपना रोल आउट करना होगा?

जवाबों:


298

"Eventcreate.exe" आज़माएँ

एक उदाहरण:

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

यह एक नई घटना बनाएगा स्रोत नामित MYEVENTSOURCEतहत APPLICATIONघटना लॉग के रूप में INFORMATIONघटना प्रकार

मुझे लगता है कि यह उपयोगिता केवल XP के बाद से ही शामिल है।

आगे की पढाई


13
आपको "cmd" पर राइट क्लिक करना होगा और विस्टा से "run as admin" चुनें
Ian Ringrose

16
Eventcreate एक मौजूदा स्रोत के तहत एक घटना रिकॉर्ड करता है, यह ओपी के अनुरोध के अनुसार खरोंच से एक नया स्रोत नहीं बनाएगा।
पॉल शावेज

5
@PaulChavez यदि नामित स्रोत मौजूद नहीं है, तो इसे बनाया गया है।
फ़रिना

1
यदि MYEVENTSOURCEपहले से ही मौजूद है और घटना के अलावा कुछ और का उपयोग कर बनाया गया था , तो यह घटना पैदा नहीं करेगा
क्रिस एस

2
जब तक यह काम करता है और एक नया स्रोत बनाता है, तब तक मेरे सभी ईवेंट्स में "इवेंट आईडी 0 के लिए स्रोत myApp से विवरण नहीं मिल सकता है। या तो इस ईवेंट को उठाने वाला घटक आपके स्थानीय कंप्यूटर पर स्थापित नहीं है या इंस्टॉलेशन दूषित है" इसलिए मैंने किया था रजिस्ट्री को अंत में संपादित करने के लिए
dibs487

176

PowerShell 2.0 के EventLog cmdlets को आज़माएं

इसे 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
यह ठीक काम करता है, बस एलिवेटेड विशेषाधिकारों के साथ पावरशेल चलाना याद रखें।
रॉड

4
मेरे द्वारा बनाए गए नए लॉग को देखने के लिए मुझे इवेंट व्यूअर को खोलना और बंद करना था
amackay11

इसके अलावा अगर आप सक्रिय रूप से विकास कर रहे हैं New-EventLogऔर Remove-EventLog'आगे-पीछे' कर रहे हैं तो आपको एक समस्या आ सकती है जब Sourceपंजीकरण किया जाता है लेकिन निर्दिष्ट करने के लिए नहीं लिखते हैं Logपुन: प्रारंभ हो कंप्यूटर उस के साथ मदद करता है। एक और टिप: आप देख सकते हैं कि आपके ईवेंट लॉग के साथ क्या चल रहा है यहां regedit :[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
Corio

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

या केवल कमांड लाइन कमांड का उपयोग करें:

Eventcreate


1

हालांकि cmd / बैच संस्करण काम करता है आप एक मुद्दे में चला सकते हैं जब आप एक 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

आप diagnostics.Event लॉग वर्ग का उपयोग करके अपना स्वयं का कस्टम ईवेंट बना सकते हैं। एक विंडोज़ एप्लिकेशन खोलें और एक बटन पर क्लिक करें निम्न कोड।

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

"MyNewLog" का अर्थ है वह नाम जिसे आप अपने लॉग इन इवेंट व्यूअर को देना चाहते हैं।

अधिक जानकारी के लिए इस लिंक की जाँच करें [ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.