मैंने एक सी # ऐप लिखा है जो लगातार लूप में चलता है और कई धागे लॉग 4नेट फ़ाइल को लिखते हैं।लॉग 4नेट प्रदर्शन
मुद्दा यह है कि ऐप चल रहा है, लूप को पूरा करने में जितना अधिक समय लगता है। मैंने एक एएनटीएस प्रदर्शन प्रोफाइलर चलाया है, और देखा है कि इनमें से अधिकतर CPU समय लॉग 4.net के साथ लॉगिंग करने में व्यतीत होता है।
अधिक वर्बोज़ लॉग जितना अधिक CPU उपयोग करता है और 30 मिनट के बाद यह 100% CPU का उपयोग कर रहा है। अगर मैं लूप के लिए लिया गया समय लॉगिंग अक्षम करता हूं तो समय के साथ स्थिर रहता है। मैंने विंडोज परफॉर्मेंस मॉनीटर पर एक नज़र डाली और भौतिक डिस्क ज्यादातर समय आईडीईई है।
मैंने अपनी लॉगिंग को न्यूनतम रखने की कोशिश की है, लेकिन यहां तक कि अपेक्षाकृत कम मात्रा में लॉगिंग के साथ भी मुझे समस्या का सामना करना पड़ रहा है।
<log4net>
<root>
<!-- Levels: OFF, DEBUG, INFO, WARN, ERROR, FATAL-->
<level value="INFO" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<!--Logs to a file-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\\logs\\log-file.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+ExclusiveLock" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="20" />
<maximumFileSize value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %L %M Schdl:[%property{scheduleContext}] Job:[%property{jobContext}] - %message%newline" />
</layout>
</appender>
</log4net>
मैं हर वस्तु है कि लॉग से एक ही लकड़हारा उपयोग कर रहा हूँ:
यहाँ मेरी Log4net.xml विन्यास फाइल का एक नमूना है।
log4net.ILog logger;
log4net.Config.BasicConfigurator.Configure();
logger = log4net.LogManager.GetLogger(typeof(myProject));
यह अधिक से अधिक CPU का उपयोग क्यों लंबे समय तक चलता है?
इस पर सुधार करने के तरीके पर कोई सलाह की सराहना की जाएगी।
इसके बजाए एडीओनेट एपेंडर का उपयोग करने का प्रयास करें? – ram
एडीओनेट एक ही समस्या पैदा कर रहा था –