2013-11-05 39 views
12

यह सरल है, मैं ईवेंट लॉग करने के लिए कुछ लिखना चाहते हैं।ईवेंट लॉग लेखन त्रुटि

protected override void OnStop() 
    { 
     // TODO: Add code here to perform any tear-down necessary to stop your service. 
     if (!System.Diagnostics.EventLog.SourceExists("IvrService")) 
     { 
      System.Diagnostics.EventLog.CreateEventSource(
       "IvrService", "IvrServiceLog"); 
     } 
     EventLog eventLog1 = new System.Diagnostics.EventLog(); 
     eventLog1.Source = "IvrService"; 
     eventLog1.Log = "IvrServiceLog"; 
     try 
     { 
      eventLog1.WriteEntry("Successfully "+State.Stopped.ToString()); 
      IvrApplication.StopImmediate(); 
     } 
     catch (Exception ex) 
     { 
      // eventLog1.WriteEntry(ex.Message); 
     } 
    } 

अपवाद है: वास्तव में क्या गलत है

Failed to stop service. System.ArgumentException: The source 'IvrService' is not registered in log 'IvrServiceLog'. (It is registered in log 'Application'.) " The Source and Log properties must be matched, or you may set Log to the empty string, and it will automatically be matched to the Source property. 
    at System.Diagnostics.EventLogInternal.VerifyAndCreateSource(String sourceName, String currentMachineName) 
    at System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) 
    at System.Diagnostics.EventLog.WriteEntry(String message) 

उत्तर

15

त्रुटि संदेश आपको बता रहा है। आप इवेंट स्रोत IvrService साथ आवेदन के लिए लॉग, नहीं IvrServiceLog पंजीकृत किया है। System.Diagnostics.EventLog.SourceExists सत्यापित करता है कि स्रोत मौजूद है, लेकिन किसी विशेष लॉग के लिए नहीं।

मेरा अनुमान है कि आप मूल रूप से बाद में आवेदन लॉग के साथ इस पंजीकृत है और फिर इसे बदल IvrServiceLog में लिखने के लिए है।

अपने विकास मशीन को साफ करने के लिए, आप बस निम्नलिखित और फिर आप कोड आगे बढ़ते हुए काम करना चाहिए चला सकते हैं।

System.Diagnostics.EventLog.DeleteEventSource("IvrService"); 
+0

आपका मतलब है कि पहले इसे हटा दें, फिर भी मेरे कोड का उपयोग करें। –

+0

@Love हाँ, तुम सिर्फ कोड मैं मौजूदा लॉग सफाई करने के लिए अपने विकास मशीन पर एक बार पोस्ट को चलाने के लिए होना चाहिए और फिर इसे आगे भी काम करना चाहिए। –

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