Below you will find pages that utilize the taxonomy term “Log4net”
Posts
log4net - BufferingForwardingAppender
為了調效 log4net RollingFileAppender 的性能做了個簡單的測試,測試程式如下:
using System; using System.Diagnostics; using log4net; using log4net.Config; namespace ConsoleApplication27 { class Program { static void Main(string[] args) { XmlConfigurator.Configure(); var count = 100000; var logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); var sw = Stopwatch.StartNew(); for (var idx = 0; idx < count; ++idx) { logger.Debug(idx.ToString()); } Console.WriteLine(sw.ElapsedMilliseconds); } } } {% img /images/posts/log4netBufferingForwardingAppender/1.png %}
套上 BufferingForwardingAppender。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <root> <level value="ALL"/> <appender-ref ref="BufferingForwardingAppender"/> </root> <appender name="BufferingForwardingAppender" type="log4net.
read morePosts
log4net - RollingFileAppender's CountDirection Property
log4net 在使用 RollingFileAppender 去做 Log 的紀錄時,我們需要注意 CountDirection 的設定。設定值大於 0,表示以遞增的方式 Rolling。反之,表示以遞減的方式 Rolling。
{% img /images/posts/Log4NetCountDirection/1.png %}
該設定預設值為 -1,所以當新的檔案要產生時,他需要先用 Rename 將檔案往後擠才行,可以想見這樣會有不必要的效能耗費。透過 Process Monitor 可以很清楚的看到背後的運作。
{% img /images/posts/Log4NetCountDirection/2.png %}
所以可以的話,我們可以將設定值改為 1,用以取得較好的效能。
這邊筆者簡單的做個試驗,寫了一個簡單的程式讓它持續的寫 log,而 log4net 設定每 1 KB 產生一個檔案,用以監測效能上的影響。
using log4net; using log4net.Config; using System; using System.Diagnostics; namespace ConsoleApplication6 { class Program { static void Main(string[] args) { XmlConfigurator.Configure(); var count = 500; var logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); Console.WriteLine("{0} ms", DoTest(count, () => { logger.Debug("test"); })); } static long DoTest(int count, Action action) { var sw = Stopwatch.
read more