2013-06-19 2 views
18

मैं डेटाबेस पर लिखने के लिए एनएलओजी प्राप्त करने की कोशिश कर रहा हूं, हालांकि जब मैं डीबग करने का प्रयास करता हूं तो मेरे वर्तमान कोड के साथ यह एक अपवाद फेंकता है, अपवाद है: 'NotifyIcon.Program' के लिए प्रकार प्रारंभकर्ता ने अपवाद फेंक दिया।मैं डेटाबेस पर लिखने के लिए एनएलओजी को कैसे कॉन्फ़िगर कर सकता हूं?

मेरा एनएलओजी कॉन्फ़िगरेशन फ़ाइल कोड नीचे है, क्योंकि ऐसा लगता है क्योंकि यह एकमात्र कोड है जिसे मैंने बदल दिया है।

<?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" autoReload="true"> 

    <!-- 
    See http://nlog-project.org/wiki/Configuration_file 
    for information on customizing logging rules and outputs. 
    --> 
    <targets> 
    <!-- add your targets here --> 

    <target name="database" xsi:type="Database" /> 
    <target xsi:type="Database" 
      name="String" 
      dbUserName="Layout" 
      dbProvider="sqlserver" 
      useTransactions="false" 
      connectionStringName="String" 
      connectionString="Data Source=AC-02\SQLEXPRESS;Initial Catalog=master;Integrated Security=True" 
      keepConnection="true" 
      dbDatabase="Layout" 
      dbPassword="Layout" 
      dbHost="Layout" 
      installConnectionString="Layout" 
      commandText="INSERT INTO Logs (Machine_Name, Username, Logon_Time, Screensaver_On, Screensaver_Off, Logoff_Time, Program_Start) Values @MachineName, @Username, @LogonTime, @Screensaver_On, @Screensaver_Off, @LogoffTime, @ProgramStart "/> 

    </targets> 

    <rules> 

    <logger name="*" minlevel="Trace" writeTo="database" /> 

    </rules> 
</nlog> 

किसी भी और सभी मदद बहुत सराहना किया जाएगा =]

+0

मैं इसमें कोई विशेषज्ञ नहीं हूं, लेकिन पहले देखो ऐसा लगता है कि आप जो त्रुटि प्राप्त कर रहे हैं वह इस फ़ाइल से संबंधित नहीं है। यदि आप इस फ़ाइल को वापस उस चीज़ में बदलते हैं, तो क्या आपका कोड काम करता है ?? – abhinav

+0

हां यह करता है, मैंने एक बोग-मानक टेक्स्ट फ़ाइल को लिखने के लिए नलॉग प्राप्त करने में कामयाब रहा है, हालांकि जब मैं उपरोक्त में कॉन्फ़िगरेशन फ़ाइल बदलता हूं तो यह एक अपवाद फेंकता है, जो कि मुझे बताता है कि यह अपवाद है कि एक अपवाद है –

+0

फेंक दिया गया एक और डीबगिंग टिप, यदि आप कंसोल के माध्यम से डीबी स्टैंडअलोन पर कमांड टेक्स्ट में अपनी क्वेरी चलाते हैं, तो क्या यह काम करता है? – abhinav

उत्तर

12

आपको डालने वाले पैरामीटर याद आ रहे हैं।

http://justinpdavis.blogspot.com/2010/04/logging-to-database-with-nlog.html

पर उदाहरण देखें nLog वेब पेज यह बहुत स्पष्ट है कि इन आवश्यक हैं नहीं है, लेकिन आपको लगता है चाहिए, अगर आप अपनी आँखें भेंगापन और https://github.com/nlog/NLog/wiki/Database-target पढ़ा है कि वे आवश्यक हैं।

+0

धन्यवाद, यह nlog.config फ़ाइल में सही वाक्यविन्यास के संबंध में बहुत उपयोगी था, मैंने इस मुद्दे को हल किया है बहुत बहुत धन्यवाद =] –

0

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

+0

के तहत बस [बाहरी कोड] है, शायद यह लिंक मदद करेगा। http://geekswithblogs.net/jkrebsbach/archive/2012/02/23/type-initializer-for-classname-threw-an-exception.aspx – abhinav

1

से मेल नहीं खाता है, ऐसा लगता है कि आपकी डालने वाली स्ट्रिंग सही प्रारूप में नहीं है? आप पैरामीटर सूची के आसपास() गायब हैं।

commandText="INSERT INTO Logs (Machine_Name, Username, Logon_Time, Screensaver_On, Screensaver_Off, Logoff_Time, Program_Start) Values (@MachineName, @Username, @LogonTime, @Screensaver_On, @Screensaver_Off, @LogoffTime, @ProgramStart) " 
+0

मैंने अपना कोड सही किया हालांकि अपवाद अभी भी फेंक दिया गया है, मदद के लिए धन्यवाद बीटीडब्ल्यू =] –

0

यू ने 2 लक्ष्य भी लिखे। और कई विशेषताओं को भी सेट करने की आवश्यकता नहीं है। बस होना चाहिए:

<target name="DbLog" xsi:type="Database" connectionString="YourConStr" 
     commandText="insert into [blablablabal] (Col1) values (@val1)"> 
    <parameter name="@val1" layout="${level}" /></target> 

ऐसा कुछ। आसान नहीं? :)

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

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