close

編輯應用程式 App.config

 

 App.config插入下列設定,從<configSections>開始

(1) Log4NetModule為自訂義模組名稱,等會後面會呼叫

(2) 輸出log檔案至特定資料夾,並自動創建子資料夾 年-月-日

(3) <rollingStyle>為Date,表示會根據時間條件觸發產生新的log檔案

(4) <datePattern> 表示每分鐘會創立一個新的log檔案名稱為yyyy-MM-dd HHmm'.txt'

(5) <staticLogFileName> false表示不會全部儲存在同一個log檔案

(6) <ConversionPattern>表示輸出的內容

(7) <appender-ref ref="Log4NetModule">呼叫前面設定的模組名稱

 

<configSections>
    <section name ="log4net"
             type ="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    <appender name="Log4NetModule" type="log4net.Appender.RollingFileAppender,log4net">
      <file type="log4net.Util.PatternString" value="C:\temp\logs\%date{yyyy-MM-dd}\" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyy-MM-dd HHmm'.txt'" />
      <maxSizeToRollBackups value="10" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m%n" />
      </layout>
    </appender>
    <root>
      <level value="All" />
      <!-- If the following line is not included the log file
      will not be created even if log4net is configured with this file. -->
      <appender-ref ref="Log4NetModule" />
    </root>
  </log4net>

開啟AssemblyInfo.cs

加入下列設定

 

// 加入lot4net讀取預設App.config
[assembly:log4net.Config.XmlConfigurator(Watch =true)]

 

=========================================

using log4net;

加入一個ILog實體

 

private static readonly ILog log =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

 

GUI加入一個timer,每20秒執行一次DoJob 

private void DoJob()
{
    for(int i=10; i>=0; i--)
    {
         var ret = 10 / i;
         log.Info($"10/{i}={ret}");
    }
}

 

 

 

按下Start啟動timer

 


private void timer1_Tick(object sender, EventArgs e)
{
    try
    {
         log.Info("Start to do job!");
         DoJob();
         log.Info("Stop doing job");
    }
    catch (Exception exception)
    {
         log.Error("DoJob has encounter an error ");
         log.Error(exception. Message);
    }
}

開始執行,自動創立C:\temp\logs\目錄, 並自動創建子資料夾 年-月-日

每次執行達到1分鐘便自動創立一個新的log檔案

log檔案會記錄如下:

以INFO標籤提示每次10/i的計算結果

以ERROR標籤提示意外發生,並列出意外的訊息(發生除以0)

 

 

 

 

參考資料

 

  1. 如何使用 log4net 以日期为文件名输出
  2. log4net 按天与按小时记日志的配置
  3. log4net按日志级别(debug,info,warn,error,fatal)生成日志目录,同时每小时生成一个日志文件
  4. Apache log4net™ Config Examples
  5. How to configure log4net to print to console in debug mode

  6. Log4Net doesn’t write log in release mode - Console Application

  7. Log4net does not write the log in the log file

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()