मैं log4net लकड़हारा में नया हूँ और मैं एक डेटाबेस में लॉग को सहेजने के लिए AdoNetAppender का उपयोग करके लकड़हारा बनाने की कोशिश कर रहा हूँ।

जब मैं साधारण लेआउट का उपयोग करता हूं

<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />

और डेटाबेस में सहेजने के लिए:

<commandText value="INSERT INTO Log ([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" />
    </layout>
</parameter>

यह सफलतापूर्वक डेटाबेस में सहेजता है; मुद्दा यह है कि मुझे अधिक विवरण (स्थान, विधि, रेखा) पंजीकृत करने की आवश्यकता है लेकिन यह डेटाबेस में सहेजने में विफल रहता है।

उसके लिए मैंने निम्नलिखित कॉन्फ़िगरेशन का उपयोग किया:

    <layout type="log4net.Layout.PatternLayout">
   <conversionPattern value="%date [%thread] %-5level %logger %location 
    %method %line - %message %newline" />
   </layout>

और डेटाबेस डालने के लिए:

    <commandText value="INSERT INTO Log( [Date],[Thread],[Level],[Logger], 
    [Locaotion],[Method],[Line],[Message],[Exception]) 
                    VALUES (@log_date, @thread, @log_level, 
    @logger,@location @method, @line,  @message, @exception)" />
     <parameter>
  <parameterName value="@location" />
  <dbType value="String" />
  <size value="255" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%location" />
  </layout>
  </parameter>

 <parameter>
<parameterName value="@method" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%method" />
  </layout>
 </parameter>

<parameter>
<parameterName value="@line" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%line" />
</layout>
</parameter>

मेरा सी # कोड:

private static ILog log = LogManager.GetLogger(typeof(HomeController));
//private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

मैं डेटाबेस में पूर्ण त्रुटि विवरण कैसे सहेज सकता हूं?

1
shima 5 नवम्बर 2018, 15:07

1 उत्तर

सबसे बढ़िया उत्तर

मुझे त्रुटि मिलती है मैं डेटाबेस डालने वाले कोड में एक (,) भूल गया था और मैं वैश्विक में Application_Error जोड़ता हूं

रूपांतरण पैटर्न कोड:

    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%location] [%method] [%line] - %message %newline" />
  </layout>

डेटाबेस डालने का कोड:

  <commandText value="INSERT INTO Log( [Date],[Thread],[Level],[Logger],[Location],[Method],[Line],[Message],[Exception]) 
                              VALUES (@log_date, @thread, @log_level, @logger, @location, @method, @line, @message, @exception)" />

और वैश्विक कोड के लिए:

    private static readonly ILog log = LogManager.GetLogger(typeof(MvcApplication));

    private void Application_Error(Object sender, EventArgs e)
    {
        var ex = Server.GetLastError().GetBaseException();

        log.Error("App_Error", ex);
    }
1
shima 6 नवम्बर 2018, 12:12