2008-09-24 15 views
9

मैं संग्रहित प्रक्रिया के माध्यम से डेटा लॉग करने के लिए ADONetAppender (कोशिश) करने के लिए उपयोग कर रहा हूं (ताकि मैं लॉगिंग दिनचर्या में तर्क को इंजेक्ट कर सकूं)।मैं log4net ADONetAppender में संग्रहीत प्रक्रिया का उपयोग कैसे करूं?

मेरी कॉन्फ़िगरेशन सेटिंग्स नीचे सूचीबद्ध हैं। क्या कोई बता सकता है कि मैं क्या गलत कर रहा हूं?

<appender name="ADONetAppender_SqlServer" type="log4net.Appender.ADONetAppender"> 
    <bufferSize value="1" /> 
    <threshold value="ALL"/> 
    <param name="ConnectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <param name="ConnectionString" value="<MyConnectionString>" /> 
    <param name="UseTransactions" value="False" /> 
    <commandText value="dbo.LogDetail_via_Log4Net" /> 
    <commandType value="StoredProcedure" /> 
     <parameter> 
     <parameterName value="@AppLogID"/> 
     <dbType value="String"/> 
     <size value="50" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{LoggingSessionId}" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@CreateUser"/> 
     <dbType value="String"/> 
     <size value="50" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{HttpUser}" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@Message"/> 
     <dbType value="String"/> 
     <size value="8000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%message" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@LogLevel"/> 
     <dbType value="String"/> 
     <size value="50"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%level" /> 
     </layout> 
     </parameter> 
</appender> 

उत्तर

4

एक सतर्क डीबीए के लिए धन्यवाद, हमने समस्या हल कर दी है।

"@Message" पैरामीटर का आकार नोट करें। लॉग 4नेट इस प्रकार को परिवर्तित करने के तरीके पर अनुमान लगा रहा है कि (और मुझे लगता है) इसे nvarchar में परिवर्तित करने के बावजूद कॉलम एक वर्चर है। http://support.microsoft.com/kb/827366

मैं 4000 और सब कुछ करने के लिए आकार बदल: जबकि varchar डीबीए इस KB आलेख में वर्णित के रूप में त्रुटियों देखा 8000

की एक अधिकतम आकार की है क्योंकि nvarchar 4000 की एक अधिकतम आकार की है यह एक बड़ी बात है तैरता है काम करता है।

उम्मीद है कि इससे किसी और समस्या से बचने में मदद मिलेगी।

चीयर्स!

-3

</configSections> 
<log4net> 

    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 

     <bufferSize value="1"/> 

     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 

     <connectionString value="Data Source=yourservername;initial Catalog=Databasename;User ID=sa;Password=xyz;"/> 



     <commandText value="INSERT INTO Log4Net ([Date], [Thread], [Level], [Logger], [Message], 
       [Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/> 

     <parameter> 

      <parameterName value="@log_date"/> 

      <dbType value="DateTime"/> 

      <layout type="log4net.Layout.RawTimeStampLayout"/> 

     </parameter> 

     <parameter> 

      <parameterName value="@thread"/> 

      <dbType value="String"/> 

      <size value="255"/> 

      <layout type="log4net.Layout.PatternLayout"> 

       <conversionPattern value="%thread ip=%property{ip}"/> 

      </layout> 

     </parameter> 

     <parameter> 

      <parameterName value="@log_level"/> 

      <dbType value="String"/> 

      <size value="50"/> 

      <layout type="log4net.Layout.PatternLayout"> 

       <conversionPattern value="%level"/> 

      </layout> 

     </parameter> 

     <parameter> 

      <parameterName value="@logger"/> 

      <dbType value="String"/> 

      <size value="255"/> 

      <layout type="log4net.Layout.PatternLayout"> 

       <conversionPattern value="%logger"/> 

      </layout> 

     </parameter> 

     <parameter> 

      <parameterName value="@message"/> 

      <dbType value="String"/> 

      <size value="4000"/> 

      <layout type="log4net.Layout.PatternLayout"> 

       <conversionPattern value="%message"/> 

      </layout> 
संबंधित मुद्दे