設定 log4net

讓我們建立一個簡單的 Hello World 控制檯應用程式,並使用 log4net 將某些內容記錄到控制檯。一旦我們執行了這個,我們可以在以下示例中將其擴充套件為在實際開發場景中使用它。讓我們從小開始,從那裡建立起來。

首先,我們需要在 Visual Studio 和 WriteLine("Hello World") 中建立一個簡單的 Console 專案,如下所示

StackOverflow 文件

接下來,我們需要將 log4net 庫新增到我們的專案中。因此,我們需要右鍵單擊 References 並選擇 Manage NuGet Packages

StackOverflow 文件

然後搜尋 log4net 並安裝

StackOverflow 文件

我們現在已成功將 log4net.dll 新增到我們的專案中。

現在我們需要配置 app.config ( 如果它是 web 應用程式,則為 web.config )。這部分有點棘手,但不要驚慌。我們將逐步完成它並進行日誌記錄和執行。

在 *app.config 下*我們首先需要在配置下建立一個配置部分。我們需要提供如下所示的名稱和型別:

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>

我們在這裡所做的是我們要在我們的配置檔案中建立一個名為 log4net 的部分,需要查詢。與伐木有關的一切都將在這裡。從建立我們的日誌檔案,如何長,以及需要記錄什麼資訊。現在讓我們繼續建立 log4net 部分。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    
  </log4net>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

我們要在 log4net 部分新增的第一件事是一個 appender。appender 基本上是一個日誌工具。這是我們想要記錄日誌的內容。有許多可用於登入檔案,資料庫等的 appender。在這個例子中,我們將登入到 Console Window,所以讓我們建立一個 Console Appender:

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
  
  </appender>
</log4net>

接下來,我們需要定義一個佈局:

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
    
    </layout>
  </appender>
</log4net>

在佈局下,我們將定義我們想要在控制檯上顯示的內容以及我們希望如何顯示它。為此,我們需要一種轉換模式。我們可以使用許多不同型別的模式,對於這個例子,我們將堅持一個相當簡單的模式。

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
    </layout>
  </appender>
</log4net>

我們上面所做的是說我們需要以下資訊:絕對時間戳,丟擲異常的執行執行緒和日誌記錄級別。log4net 提供了 7 個日誌記錄級別。

  • 關 - 沒有記錄任何內容(無法呼叫)
  • 致命
  • 錯誤
  • 警告
  • 資訊
  • DEBUG
  • ALL - 一切都記錄下來(無法呼叫)

但是,在 7 中我們只能使用 5(DEBUG,INFO,WARN,ERROR 和 FATAL)。將日誌記錄級別宣告為 DEBUG 意味著它將記錄所有內容,即 DEBUG,INFO,WARN,ERROR 和 FATAL。但是,將日誌記錄級別宣告為 WARN 將僅記錄 WARN,ERROR 和 FATAL。希望你瞭解層次結構。

app.config 下我們需要的最後一件事是根部分。根部分包含我們的頂級記錄器和登入級別。重要的是要理解一切都從 root 繼承,因此除非在根目錄下引用,否則不會記錄 appender。新增後,這就是你的 app.config 應該是這樣的:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration> 

複製貼上配置檔案的部分並不是一個壞主意,但重要的是要了解它們的責任。現在我們已經完成了 *app.config 的*配置,我們需要在 Console Project 中新增一些程式碼。首先,我們需要定義一個需要放在類之外的一次性條目。

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

將它放在 Program.cs 檔案中的 using 語句下面。接下來,我們需要建立一個 logger 例項來將其用於日誌記錄。每節課一次。

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

最後,我們需要記錄一些東西

log.Error("This is my error");

你的 Program.cs 檔案應該是這樣的:

using System;

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

namespace Log4netTutorial
{
    class Program
    {
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
            log.Error("This is my error");

            Console.ReadLine();
        }
    }
}

繼續執行程式,你應該在控制檯中記錄你的錯誤:

StackOverflow 文件