wpf Log4net的配置和使用


現在項目涉及的是cs客戶端,在項目中使用log4net記錄本地日志和異常信息,這里項目做完了,想着自己做一個demo,測試記錄一下log4Net的配置使用。

 

第一步、新建一個wpf應用程序,項目右鍵 -----》點擊NuGet程序包 -----》搜索lognet -------》點擊安裝

 

第二步:在app.config中添加節點  (當然,如果是Web項目就是 web.config)

配置文件代碼如下:

<configuration>
  <configSections>
    <!--log4net配置-->
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  </configSections>
  <!--log4net配置-->
  <log4net>
    <!--定義輸出到文件中-->
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定義文件存放位置-->
      <!--file可以指定具體的路徑 D://logfile.txt。-->
      <file value="D://logfile.txt"/>
      <!--如果放在Debug下,當然名字你可以改 -->
      <!--<file value="log//logfile.txt"/>-->
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <!--備份log文件的個數最多10個-->
      <maxSizeRollBackups value="10" />
      <!--每個log文件最大是2M,如果超過2M將重新創建一個新的log文件,並將原來的log文件備份。-->
      <maximumFileSize value="2MB" />
      <datePattern value="yyyyMMdd-HH:mm:ss"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--輸出格式-->
        <!--樣例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="記錄時間:%date 線程ID:[%thread] 日志級別:%-5level 出錯類:%logger property:[%property{NDC}] - 錯誤描述:%message%newline"/>
      </layout>
    </appender>
    <!--定義日志的輸出媒介-->
    <root>
      <!--指定將此級別及以上的log打印到log文件中-->
      <level value="DEBUG"/>
      <!--文件形式記錄日志-->
      <appender-ref ref="LogFileAppender"/>
    </root>
  </log4net>
</configuration>

把配置加到app.config中,如圖所示

 

第三步:

 在項目中找到Properties文件夾中找到AssemblyInfo.cs 在代碼追后 添加 [assembly: log4net.Config.XmlConfigurator(Watch = true)]

 

 

 

第四步:添加操作log4net的后台代碼

xaml文件創建按鈕

<Button Name="logBtn" Click="LogBtn_Click" Content="創建日志" Width="60" Height="30"></Button>

xaml.cs 添加執行操作代碼

private void LogBtn_Click(object sender, RoutedEventArgs e)
        {
            string strLog = String.Format("[Thread ID:{0}]{1}", AppDomain.GetCurrentThreadId(), "Log4net寫入日志配置處理");
            WriteLog(strLog);
        }

        private void WriteLog(string exp = null, string loggerName = "InfoLogger")
        {
//新建的一個靜態類 LogObject.Log(loggerName).Info(exp);
LogObject.Log(loggerName).Error(exp); }

public static class LogObject
    {

        public static ILog Log(string LoggerName)
        {
//log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
  return LogManager.GetLogger(LoggerName); } }

 

第五步:

找到文件路徑D://logfile.txt 查看日志!

 

靜態類中獲取日志對象的另一種寫法:這個是程序自動獲取當前程序對象     (上面的我是通過WriteLog方法傳入的)

ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
return log;

日志輸出:

 

 

如果要在程序剛運行和退出的時候寫入日志,在App.xaml.cs中加入:

public static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            Log.Info("==Startup=====================>>>");
        }
        protected override void OnExit(ExitEventArgs e)
        {
            Log.Info("<<<========================End==");
            base.OnExit(e);
        }

 

先再運行編譯后的exe文件

然后退出程序,看結果

我們可以看到程序在進入和退出的時候也寫入了日志。 

 

擴展的知識點

日志記錄器(Logger)的級別順序: 
    分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優先級 從高到低分別是 ERROR、WARN、INFO、DEBUG。 
    通過在這里定義的級別,您可以控制到應用程序中相應級別的日志信息的開關。比如在這里定義了INFO級別, 則應用程序中所有DEBUG級別的日志信息將不被打印出來。(比定義低的級別不會被打印出來)

    優先級高的將被打印出來。項目上生產環境時候建議把debug的日志級別重新調為warn或者更高,避免產生大量日志。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM