2010-07-01 11 views
14

पर नहीं लिख सकता है मैं एनएलओजी के साथ इवेंट लॉग में नहीं लिख सकता। मैं कंसोल और फ़ाइल में लिखने में सक्षम हूं। मैंने एनएलओजी में अपवादों को चालू कर दिया है और मुझे एनएलओजी से कोई प्रतिक्रिया नहीं मिली है।एनएलओजी: इवेंट लॉग

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     throwExceptions="true"> 
    <targets> 
     <target name="console" xsi:type="Console" layout="${message}" /> 
     <target xsi:type="EventLog" name="eventlog" layout="${message}" log="Application" source="aaaTest"/> 
     <target xsi:type="File" fileName="log.txt" name="file"/> 
    </targets> 

    <rules> 
     <logger name="*" minlevel="Debug" writeTo="eventlog,console,file" /> 
    </rules> 
</nlog> 

ईवेंट व्यूअर में, मैं "ईवेंट व्यूअर (स्थानीय)"> "Windows लॉग"> "ऐप्लिकेशन" तलाश में हूं:

यहाँ मेरी NLog.config है। हालांकि, मुझे लॉग में "aaaTest" (मेरा परिभाषित स्रोत) का कोई उदाहरण नहीं दिखता है।

+0

तो व्यवस्थापक हूं रूप में अपने आवेदन चलाने के लिए, लॉग संदेश सही ढंग ईवेंट लॉग में दिखाई देगा:

कोई एप्लिकेशन मैन्युअल रूप घटना स्रोत मैं निम्न स्क्रिप्ट का उपयोग रजिस्टर करने के लिए। मैं विंडोज 7 का उपयोग कर रहा हूं। क्या ईवेंट लॉग में लिखने का कोई और तरीका नहीं है जब तक कि मैं अपना आवेदन प्रशासक के रूप में नहीं चलाता? (मैंने इस आलेख पर ठोकर खाई जिसने मुझे व्यवस्थापक के रूप में चलाने का प्रयास करने का विचार दिया: http://webcache.googleusercontent.com/search?q=cache:8pYpa9wBFTEJ:connect.microsoft.com/VisualStudio/feedback/details/509224/security -असेप्शन-टू-एक्सेस-एप्लिकेशन-इवेंट-लॉग + my.application.log + securityexception और cd = 1 और hl = en & ct = clnk और gl = us और client = firefox-a) – sparks

उत्तर

18

nlog forum post

से इवेंटलॉग एक आवेदन एक घटना स्रोत के रूप में पंजीकृत होना जरूरी है पर लिखने के लिए सक्षम होने के लिए। यदि आप व्यवस्थापक के रूप में वीएस चलाते हैं तो यह स्वचालित रूप से होता है। यदि आप इंस्टॉलर बनाते हैं और अपना एप्लिकेशन इंस्टॉल करते हैं तो यह पंजीकृत हो जाता है।

Set Args = WScript.Arguments 
If Args.Count < 1 then 
    WScript.Echo "USAGE: CreateEventSource.vbs <EventSourceName>" 
    WScript.Quit 
End If 
EventSourceName = Args(0) 

Set WshShell = WScript.CreateObject("WScript.Shell") 

'Create event source 
KeyName = "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog\Application\" & EventSourceName & "\EventMessageFile" 
'Change path to .NET Framework version used 
WshShell.RegWrite KeyName,"%windir%\Microsoft.NET\Framework64\v2.0.50727\EventLogMessages.dll", "REG_EXPAND_SZ" 
+1

इसके बजाय इस कमांड लाइन का उपयोग करके, VBS का उपयोग करने के बजाय। बहुत आसान। http://stackoverflow.com/questions/446691/how-to-create-windows-eventlog-source-from-command-line/1036133#1036133 "घटनाक्रम/आईडी 1/एल आवेदन/टी सूचना/एसओ स्वीकृति/डी "मेरा पहला लॉग" –

+0

मैंने पाया कि आपको केवल एक बार व्यवस्थापक के रूप में वीएस चलाने और ऐसा करने के दौरान इवेंट लॉग बनाना होगा। उसके बाद आप सामान्य के रूप में चल सकते हैं और यह अभी भी काम करेगा (जब तक आप 'स्रोत' नाम नहीं बदलते) । – SharpC

संबंधित मुद्दे