2010-07-19 20 views
11

में लॉग 4Net संदेशों को संग्रहीत करना मैं वर्तमान में कुछ कोड या टूल/सेवा ढूंढ रहा हूं जो मुझे SQL सर्वर डेटाबेस में Log4Net संदेशों को संग्रहीत करने की अनुमति देता है। क्या ऐसा कुछ पहले से मौजूद है या क्या मुझे इसे अपने आप लागू करना होगा? मुझे SO या Google पर कुछ भी नहीं मिला।SQL सर्वर

किसी भी जानकारी के लिए अग्रिम धन्यवाद।

+0

आप एसक्यूएल सर्वर डेटाबेस में log4net को स्टोर करने के लिए adonetappender का उपयोग कर सकते हैं, log4net डेटाबेस पर यह अच्छा आलेख देखें अप्रत्यक्ष रूप से प्रश्न का उत्तर देने के लिए http://goo.gl/Jf9CkH – virender

उत्तर

19

आप एक डेटाबेस में बचाया लॉग के साथ log4net का उपयोग कर समस्याओं के बारे में manual

इसके अलावा एक अच्छा blog में इस बारे में सीख सकते हैं।

+0

+1, जबकि मुझे अभी भी मेरा दैनिक हास्य – PostMan

+0

जी प्रदान कर रहा है, तो आप बहुत सही हैं, माफ करना, मैंने कुल मिलाकर एक कॉफी का अनुमान लगाया है। – Mark

+0

नहीं समस्याएं, मैं याद रखने की कोशिश कर रहा हूं कि क्या कोई चीज देखने के लिए है ... असल में, blog.stackoverflow.com पर कुछ था, आगे खोद जाएगा ... – si618

12

के साथ क्या गड़बड़ हैविवरण जानने के बिना कॉपी/पेस्ट है।उदाहरण: <bufferSize value="100" /> इसका मतलब है कि यह डेटाबेस तालिका करने के लिए लॉग नहीं करेगा जब तक यह बफर में 100 प्रविष्टियों हिट db तालिका में लिखने के लिए।

परीक्षण/डिबग सेट बफर 1

सूचना विंडो स्थानीय

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
    <bufferSize value="1" /> <!--Change to 10 or MORE This is critical , after 10 messages then log to database--> 
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <!--<connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" />--> 
    <connectionString value="data source=.;initial catalog=InternTracking;integrated security=true;" /> 
    <commandText value="INSERT INTO InternLog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
    <commandType value="Text"/> 
    <!--<commmandText value="dbo.procLog_Insert"/> 
    <commandType value="StoredProcedure"/>--> 
    <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> 
    <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> 
    </parameter> 
    <parameter> 
    <parameterName value="@exception" /> 
    <dbType value="String" /> 
    <size value="2000" /> 
    <layout type="log4net.Layout.ExceptionLayout" /> 
    </parameter> 
</appender> 

अगला लिए . के साथ प्रमाणीकरण के लिए आप app.config या web.config "रूट" का उपयोग करेगा यह है करने के लिए

<root> 
    <level value="DEBUG" /> 
    <!--<appender-ref ref="FileAppender"/>--> 

    <appender-ref ref="AdoNetAppender"/> 
</root> 
+0

बफर में मूल्यों के लिए प्रारंभिक या अप्रत्याशित समाप्ति पर क्या होता है? i.e अगर केवल 50 है और पूर्ण 100 नहीं है। क्या वे भेजे जाते हैं या वे खो जाते हैं? – Mdev

+0

@Mdev - मुझे पूरा यकीन है कि वे खो नहीं गए हैं। मैं भूल जाता हूं कि बफर संख्या प्राप्त होने तक उन्हें कैसे संग्रहीत/रखा जाता है। क्षमा करें - अगर आपको उत्तर मिल जाए तो मुझे बताएं - मैं किसी अन्य प्रोजेक्ट पर चले गए जो मुझे किसी भी लॉगिंग आदि से निपटने में सक्षम नहीं है .. –

+0

मैंने आपको +1 देने के लिए स्टैक ओवरफ्लो में लॉग इन किया है :) –