2008-12-19 11 views
5

क्या किसी को system.data.sqlite प्रदाता का उपयोग करने के लिए log4net को सेट अप करने के बारे में एक अच्छा उदाहरण पता है?log4net और system.data.sqlite

मैं हाल ही में इसके साथ खेल रहा हूं और मैंने सोचा कि मेरे पास यह सब काम कर रहा है। यह डेटाबेस के लिए एक सफल कनेक्शन बनाता है और इसे "लिखता है"। हालांकि, जब मैं तालिका डेटा को देखता हूं, तो यह वास्तव में लॉग नहीं करता है।

उत्तर

0

मैं आज कि एक ही बात खोज रहा था और पाया http://sqlite.phxsoftware.com/forums/t/1667.aspx

यह जो सफलतापूर्वक System.Data.SQLite एडीओ प्रदाता (बजाय अन्य एक है कि सरकारी अपाचे में प्रलेखित है का उपयोग करने में कामयाब रहे किसी से एक नमूना विन्यास है दस्तावेज़)।

आशा है कि यह आपको सही दिशा में ले जाए।

11

यकीन है कि आप निम्नलिखित संदर्भ सेट करें:

  • log4net (जाहिर है)
  • System.Data.SQLite (आप इस एक के बारे में भूल सकता है)

दृश्य में इस परियोजना को बंद करें स्टूडियो और एक टेक्स्ट एडिटर में .csproject (या VB के समतुल्य) को दोबारा खोलें, और संदर्भ अनुभाग देखें। मेरा यह दिखता है:

<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\externals\log4net-1.2.10\bin\net\2.0\release\log4net.dll</HintPath> 
</Reference> 
<Reference Include="System" /> 
<Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\externals\sqlite.net\System.Data.SQLite.dll</HintPath> 
</Reference> 

SQLite के संदर्भ को नोटिस करें। इस मामले में आपको इस पाठ की आवश्यकता है: System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 यह असेंबली का पूरा नाम है जो ADO.net संगत एसक्यूएल कनेक्शन कक्षाओं को होस्ट करता है जो वास्तव में लॉग 4नेट पर निर्भरता है।

विजुअल स्टूडियो में अपनी प्रोजेक्ट को दोबारा खोलें, सुनिश्चित करें कि आपके पास .config फ़ाइल है और इसे XML टेक्स्ट एडिटर में खोलें। सब कुछ समझाने के बजाय यहां मेरी कॉन्फ़िगरेशन फ़ाइल पेस्ट करना आसान होगा। ध्यान दें कि आप यहां असेंबली नाम का उपयोग करने जा रहे हैं।

configSections एक्सएमएल नोड में रखें यह:

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 

विन्यास का एक सीधा एक्सएमएल childnode के रूप में, इस XML खंड डाल:

<log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="sqlite" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="100" /> 
     <connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> 
     <connectionString value="Data Source=log4net.db;Version=3;" /> 
     <commandText value="INSERT INTO Log (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" /> 
     <parameter> 
      <parameterName value="@Date" /> 
      <dbType value="DateTime" /> 
      <layout type="log4net.Layout.RawTimeStampLayout" /> 
     </parameter> 
     <parameter> 
      <parameterName value="@Level" /> 
      <dbType value="String" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%level" /> 
      </layout> 
     </parameter> 
     <parameter> 
      <parameterName value="@Logger" /> 
      <dbType value="String" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%logger" /> 
      </layout> 
     </parameter> 
     <parameter> 
      <parameterName value="@Message" /> 
      <dbType value="String" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%message" /> 
      </layout> 
     </parameter> 
    </appender> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="ConsoleAppender" /> 
     <appender-ref ref="sqlite" /> 
    </root> 
</log4net> 

अंतिम चरण में आप यह सुनिश्चित करना है कि sqlite डीबी फ़ाइल जिसे आपने निर्दिष्ट स्थान पर पूर्व-मौजूद किया है। ऐसा करने का एक तरीका डेटाबेस बनाना और इसे आउटपुट फ़ोल्डर में कॉपी करने के लिए संसाधन के रूप में संलग्न करना है। सुनिश्चित करें कि आपके द्वारा निर्दिष्ट किए गए नाम के समान नाम है (इस मामले में log4net.db)

+0

वास्तव में उपयोगी उत्तर के लिए धन्यवाद। मैं कनेक्शन टाइप नहीं कर सका, और .csproj फ़ाइल में देखने के लिए सोचा नहीं था। यह पूरी तरह से मेरे लिए काम किया! +1 – Dave