के साथ आईओ बफर को फ्लश नहीं कर रहा है, मैं same issue as HENRI COOK did पर विचार कर रहा हूं। इसे bug on Apache Jira के रूप में रिपोर्ट किया गया है जहां तक हम संक्षिप्त विवरण से बता सकते हैं।Log4Net RollingFileAppender कम वॉल्यूम लॉग
सार में मेरी समस्या यह है कि एप्लिकेशन बंद होने पर ईवेंट केवल लॉग होते हैं (ईवेंट के बाद भी सप्ताह)। ऐसा तब होता है जब लॉगिंग वॉल्यूम बहुत कम होता है। मैं इसे विंडोज सर्वर 2008 आर 2 पर देख रहा हूं। यह हमें उत्पादन त्रुटियों को कैप्चर करने और प्रतिक्रिया करने से रोकता है।
अब एपेंडर एक बफरिंग नहीं है। डिफ़ॉल्ट रूप से यह प्रत्येक बार एक संदेश संलग्न होने पर अंतर्निहित स्ट्रीम पर फ्लश() को भी कॉल करता है।
मेरा सवाल यह है कि यह क्यों नहीं चल रहा है? और programatically flushing all appenders के अलावा कोई उपाय है? क्या आप pulsing appender पर एक व्यवहार्य कामकाज पर विचार करेंगे?
appender config:
<appender name="RollingErrorFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="D:\LogFiles\zzzz\xxxxxx__ERROR" />
<param name="AppendToFile" value="true" />
<param name="DatePattern" value="_yyyyMMddHH".log"" />
<param name="RollingStyle" value="Date" />
<param name="StaticLogFileName" value="false" />
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%utcdate{yyyy-MM-dd HH:mm:ss.fff},[%thread],%level,%logger,%m%n"/>
</layout>
</appender>
अद्यतन 2013-06-19
मैं किसी भी कोड के साथ व्यवहार पुन: पेश करने में सक्षम नहीं किया गया। कोई फर्क नहीं पड़ता कि मैं कितना बुरा प्रयास करता हूं, डेटा हमेशा डिस्क पर हमेशा लिखा जाता है। हालांकि, एक महत्वपूर्ण अवलोकन किया गया था: यदि फ़ाइल को पहली बार लिखना 1KiB से बड़ा है, तो संशोधित समय को बाद के लेखनों के साथ कभी अपडेट नहीं किया जाता है। यह केवल तभी अपडेट किया जाएगा जब फ़ाइल बंद होने के समय बंद हो। यदि दूसरी तरफ पहला लिखना एक छोटा-लाइनर है, तो कोई भी बाद में लिखने वाले संशोधित समय को अपडेट किया जाएगा। यह व्यवहार लॉग 4नेट और मैनुअल आईओ ऑपरेशन के बीच, 32 बिट WinXP और 64 बिट W2k8R2 के बीच, .NET 2.0, 3.5 और .NET 4.0 के बीच संगत है। यह अभी भी समस्या का समाधान नहीं करता है, लेकिन कम से कम मैं अब अजीब संशोधन-समय पैटर्न को समझ सकता हूं।
धन्यवाद, रोब
आप appender प्रयोग कर रहे हैं के लिए config पोस्ट कर सकते हैं:
logTest.config मुख्य prog द्वारा संदर्भित? –
@AdamS, config जोड़ा गया, धन्यवाद – Rbjz
और स्पष्टीकरण के लिए, क्या आप उस अवधि के दौरान कम से कम एक ERROR स्तर या उच्च लॉगिंग ईवेंट होने पर हर घंटे लॉग रोल नहीं देख रहे हैं?मैंने आपके एपेंडर के साथ परीक्षण किया और लॉग फ्लश और ठीक से रोल देखा। –