जवाबों:
अपनी Log4net config फाइल में, रोलिंग पैरामीटर के साथ निम्नलिखित पैरामीटर का उपयोग करें:
<param name="DatePattern" value="dd.MM.yyyy'.log'" />
<preserveLogFileNameExtension value="true" />
सही वाक्यविन्यास है और यह एक शानदार उत्तर है। नुकसान कैसे हुआ, क्या मैं पूछ सकता हूं?
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="logs\" />
<datePattern value="dd.MM.yyyy'.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
एक RollingLogFileAppender के लिए आपको इन तत्वों और मूल्यों की भी आवश्यकता है:
<rollingStyle value="Date" />
<staticLogFileName value="false" />
Log4Net 1.2.13 का उपयोग करते हुए हम फ़ाइल नाम में दिनांक समय की अनुमति देने के लिए निम्न कॉन्फ़िगरेशन सेटिंग्स का उपयोग करते हैं।
<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />
जो निम्नलिखित सम्मेलन में फाइलें प्रदान करेगा: logname-2015-04-17.txt
इसके साथ आमतौर पर यह सुनिश्चित करना सबसे अच्छा है कि आप प्रति दिन 1 लॉग रख रहे हैं।
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
यदि फ़ाइल का आकार एक चिंता का विषय है, तो निम्नलिखित 5 एमबी की 500 फाइलों को एक नया दिन बनाने तक की अनुमति देता है। काउंटडायरेक्शन उन फ़ाइलों के आरोही या अवरोही नंबरिंग की अनुमति देता है जो अब चालू नहीं हैं।
<maxSizeRollBackups value="500" />
<maximumFileSize value="5MB" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<CountDirection value="1"/>
<staticLogFileName value="true" />
मैंने प्रयोग करना समाप्त कर दिया ('.log' फ़ाइल नाम और 'myfilename_' के आसपास के एकल उद्धरणों पर ध्यान दें):
<rollingStyle value="Date" />
<datePattern value="'myfilename_'yyyy-MM-dd"/>
<preserveLogFileNameExtension value="true" />
<staticLogFileName value="false" />
<file type="log4net.Util.PatternString" value="c:\\Logs\\.log" />
यह मुझे देता है:
myfilename_2015-09-22.log
myfilename_2015-09-23.log
.
.
मैंने सभी उत्तरों की कोशिश की है, लेकिन हमेशा कुछ गायब था और मेरे लिए उम्मीद के मुताबिक काम नहीं कर रहा था।
तब मैंने प्रत्येक उत्तर में दिए गए संकेतों के साथ थोड़ा प्रयोग किया और निम्नलिखित सेटिंग के साथ सफल रहा:
<appender name="RollingActivityLog" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="C:\temp\LOG4NET_Sample_Activity.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<preserveLogFileNameExtension value="true" />
<datePattern value="-yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
</appender>
मापदंडों के अन्य संयोजनों के साथ मुद्दा यह था कि नवीनतम फ़ाइल में समय पैटर्न नहीं था, या यह कि समय पैटर्न को जोड़ दिया गया था, .log20171215
जिससे हर दिन एक नया फ़ाइल समय (और एक नया फ़ाइल प्रकार! ) बना - या दोनों मुद्दे प्रकट हुए।
अब इस सेटिंग से आपको इस तरह की फाइलें मिल रही हैं:
LOG4NET_Sample_Activity-20171215.log
जो मैं चाहता था।
संक्षेप में:
डेट पैटर्न को <file value=...
विशेषता में न रखें, बस इसे परिभाषित करें datePattern
।
सुनिश्चित करें कि आपके पास preserveLogFileNameExtension
मान विशेषता सेट है true
।
सुनिश्चित करें कि आपके पास निर्धारित staticLogFileName
मूल्य है false
।
सेट rollingStyle
विशेषता मूल्य के लिए Date
।
फ़ाइल एक्सटेंशन को संरक्षित करने के लिए:
<log4net>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="D:\\LogFolder\\%date{yyyyMM}\\SchT.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<maximumFileSize value="30MB" />
<staticLogFileName value="true" />
<preserveLogFileNameExtension value="true"/>
<datePattern value="ddMMyyyy" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
</log4net>
%date{yyyyMM}
और value="ddMMyyyy"
? प्रभावी तारीख पैटर्न कौन सा है?
पिछली प्रतिक्रिया के साथ विस्तारित कॉन्फ़िगरेशन अनुभाग
...
...
<rollingStyle value="Composite" />
...
...
सूचीबद्ध कार्य लेकिन मुझे उपयोग नहीं करना था
<staticLogFileName value="false" />
। मुझे लगता है कि रॉलिंगएपेंडर को (तार्किक रूप से) उस सेटिंग को नजरअंदाज करना चाहिए क्योंकि आवेदन के पुनः आरंभ होने / पुन: उपयोग होने पर फ़ाइल को हर दिन फिर से बनाया जाता है। शायद यह तुरंत रोलओवर के लिए मायने रखता है जब भी आवेदन शुरू होता है।
मैंने सिस्टम चर का उपयोग करके सीआई से आसान संशोधन को सक्षम करने के लिए कॉन्फ़िगरेशन को कोड में स्थानांतरित कर दिया। मैंने फ़ाइल नाम के लिए इस कोड का उपयोग किया है और परिणाम 'Log_03-23-2020.log' है
log4net.Repository.ILoggerRepository repository = LogManager.GetRepository(Assembly.GetEntryAssembly());
Hierarchy hierarchy = (Hierarchy)repository;
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date %level - %message%newline%exception";
patternLayout.ActivateOptions();
RollingFileAppender roller = new RollingFileAppender();
roller.AppendToFile = true;
roller.File = "Log_";
roller.DatePattern = "MM-dd-yyyy'.log'";
roller.Layout = patternLayout;
roller.MaxFileSize = 1024*1024*10;
roller.MaxSizeRollBackups = 10;
roller.StaticLogFileName = false;
roller.RollingStyle = RollingFileAppender.RollingMode.Composite;
roller.ActivateOptions();
hierarchy.Root.AddAppender(roller);