मैं एक ही प्रक्रिया से लॉग 2 अलग लॉग फ़ाइलों को लिखना चाहता हूं।
क्या यह संभव है कि log4net का उपयोग करना संभव है?
मुझे प्रत्येक लॉग फ़ाइल में अलग संदेश लिखने की आवश्यकता होगी। मैं एक विशिष्ट परिशिष्ट के लिए एक संदेश कैसे लिख सकता हूं?
मैं एक ही प्रक्रिया से लॉग 2 अलग लॉग फ़ाइलों को लिखना चाहता हूं।
क्या यह संभव है कि log4net का उपयोग करना संभव है?
मुझे प्रत्येक लॉग फ़ाइल में अलग संदेश लिखने की आवश्यकता होगी। मैं एक विशिष्ट परिशिष्ट के लिए एक संदेश कैसे लिख सकता हूं?
जवाबों:
हां, बस अपने लकड़हारे के लिए कई फाइलएपेंडर जोड़ें। उदाहरण के लिए:
<log4net>
<appender name="File1Appender" type="log4net.Appender.FileAppender">
<file value="log-file-1.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline" />
</layout>
</appender>
<appender name="File2Appender" type="log4net.Appender.FileAppender">
<file value="log-file-2.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="File1Appender" />
<appender-ref ref="File2Appender" />
</root>
</log4net>
ये उत्तर मददगार थे, लेकिन मैं अपना उत्तर दोनों app.config भाग और c # कोड भाग के साथ साझा करना चाहता था, इसलिए अगले व्यक्ति के लिए कम अनुमान है।
<log4net>
<appender name="SomeName" type="log4net.Appender.RollingFileAppender">
<file value="c:/Console.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
</appender>
<appender name="Summary" type="log4net.Appender.FileAppender">
<file value="SummaryFile.log" />
<appendToFile value="true" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="SomeName" />
</root>
<logger additivity="false" name="Summary">
<level value="DEBUG"/>
<appender-ref ref="Summary" />
</logger>
</log4net>
फिर कोड में:
ILog Log = LogManager.GetLogger("SomeName");
ILog SummaryLog = LogManager.GetLogger("Summary");
Log.DebugFormat("Processing");
SummaryLog.DebugFormat("Processing2"));
यहाँ c: /Console.txt में "प्रसंस्करण" होगा ... और \ "समसामयिकी" में "प्रसंस्करण 2" होगा।
<layout> ... </layout>
, इसके बिना मुझे लॉग फ़ाइल में कोई संदेश नहीं दिखाई दिया।
विनय सही है। उनके जवाब में आपकी टिप्पणी के जवाब में, एक तरीका यह है कि आप इसे कर सकते हैं:
<root>
<level value="ALL" />
<appender-ref ref="File1Appender" />
</root>
<logger name="SomeName">
<level value="ALL" />
<appender-ref ref="File1Appender2" />
</logger>
ऐसा मैंने पूर्व में भी किया है। तो दूसरे लॉग के लिए कुछ इस तरह:
private static readonly ILog otherLog = LogManager.GetLogger("SomeName");
और आप अपना सामान्य लकड़हारा इस प्रकार प्राप्त कर सकते हैं:
private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
यह कैसे काम करता है यह समझने के लिए दस्तावेज़ के लकड़हारे और परिशिष्ट अनुभाग पढ़ें ।
मैं सभी संदेशों को रूट लकड़हारे को लॉग करना चाहता था, और त्रुटियों के साथ एक अलग लॉग रखना चाहता हूं, यहां बताया गया है कि यह कैसे किया जा सकता है:
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="allMessages.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="ErrorsFileAppender" type="log4net.Appender.FileAppender">
<file value="errorsLog.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
<appender-ref ref="ErrorsFileAppender" />
</root>
</log4net>
फ़िल्टर तत्व के उपयोग पर ध्यान दें।
लॉग को दो या अधिक फ़ाइलों में कॉन्फ़िगर करने के लिए नीचे XML कॉन्फ़िगरेशन का उपयोग करें,
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<appender name="RollingLogFileAppender2" type="log4net.Appender.RollingFileAppender">
<file value="logs\log1.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<logger additivity="false" name="RollingLogFileAppender2">
<level value="All"/>
<appender-ref ref="RollingLogFileAppender2" />
</logger>
</log4net>
XML कॉन्फ़िगरेशन के ऊपर दो अलग-अलग फ़ाइलों में लॉग होता है।
प्रोग्रामर का विशिष्ट उदाहरण प्राप्त करने के लिए,
ILog logger = log4net.LogManager.GetLogger ("RollingLogFileAppender2");
आप दो या अधिक ऐपेंडर तत्वों को log4net रूट एलिमेंट के अंदर कई गुना फाइलों में लॉग इन कर सकते हैं।
XML कॉन्फ़िगरेशन संरचना के बारे में अधिक जानकारी या आपके आवेदन के लिए कौन सा परिशिष्ट सबसे अच्छा है, नीचे दिए गए लिंक से विस्तार से पढ़ें,
https://log.apache.org/log4net/release/manual/configuration.html https://log.apache.org/log4net/release/sdk/index.html
आशा है कि यह मदद करेगा।