.NET 幫助

NLog C#(它如何為開發人員工作)

Kannaopat Udonpant
坎納帕特·烏頓潘
2023年10月30日
分享:

記錄是軟體開發的重要方面。 它幫助開發者追蹤應用程式的行為、排除問題,並深入了解他們的程式碼在各種環境中的表現。 NLog 是一個受歡迎的 C# 日誌記錄框架,使您可以輕鬆在應用程式中實現健全且靈活的日誌記錄。 在這份全面的指南和教學中,我們將探討 C# 中的 NLog 世界。

什麼是NLog?

NLog是一個免費且開源的日誌記錄庫,適用於 .NET 和 .NET Core 應用程式。 它提供了一種靈活且高度可配置的方式來在您的應用程式中記錄訊息。 NLog 是 .NET 生態系統中廣泛使用的免費日誌記錄平台,因其性能、高擴展性和易於使用而受到青睞。

開始使用 NLog

我們可以在 ASP.NET 網頁應用程式、ASP.NET WEB APIs、Windows 表單應用程式、ASP.NET MVC 應用程式或任何其他需要的應用程式中使用 NLog。 我們將使用主控台應用程式來演示所有使用案例。

安裝 nLog NuGet 套件

要開始使用 NLog,您需要在項目中安裝 NLog NuGet 套件。 您可以通過在 Visual Studio 中使用 NuGet 套件管理器,按照以下步驟來完成這項操作:

  1. 在「工具」選單中選擇「NuGet 套件管理員」,然後選擇「管理解決方案的 NuGet 套件」。

  2. 或者,右鍵點擊方案資源管理器中的專案,選擇「管理 NuGet 套件」,然後選擇「瀏覽」。

  3. 在 NuGet 套件管理器視窗中,點擊「瀏覽」標籤,在搜尋框中輸入「NLog」。

  4. 您應該能在搜尋結果中看到 NLog 套件。 點擊它以選擇它。

  5. 在 NuGet 套件管理器視窗的右側,有一個您的解決方案中的專案列表。 選擇專案(s)您想安裝 NLog 的位置。

  6. 從版本下拉選單中選擇所需的 NLog 套件版本。 您可以選擇最新的穩定版本,或在需要時選擇特定版本。

  7. 選擇專案後(s)和版本,點擊“安裝”按鈕開始安裝過程。

    NuGet 套件管理器將下載並安裝 NLog 和所有的依賴項。 您將在輸出窗口中看到進度。

    NLog 現已成功安裝在您的專案中,您可以在 C# 代碼中開始使用它進行記錄。

創建 NLog 配置文件

建立 NLog 配置檔案(通常命名為 nlog.config),您可以按照以下步驟進行。 此配置文件將指定NLog在您的應用程式中應如何運行,包括日誌目標、佈局渲染器和規則。

在您的項目中,右鍵點擊項目或您希望創建配置文件的目標文件夾。

  1. 選擇「新增」>「新增項目...」

  2. 在「新增項目」對話框中,搜尋「XML 文件」或「XML」並選擇它。

  3. 將檔案命名為 nlog.config 並點擊「新增」按鈕。

    Nlog Csharp Guide 1 related to 創建 NLog 配置文件

  4. 在文字編輯器或 XML 編輯器中打開新創建的 nlog.config 文件。

  5. 在 NLog.XML 文件中添加以下配置。以下是一个将消息记录到 Console 目标的 NLog 配置基本示例。 您可以自訂此配置檔案以符合您的需求:

配置文件

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!-- Define targets -->
  <targets>
    <!-- Log to a file -->
    <target name="console" xsi:type="Console" layout="${longdate}
${message}"/>
  </targets>

  <!-- Define rules -->
  <rules>
    <!-- All messages with a minimum log level of Debug or higher are written to the Console -->
    <logger name="*" minlevel="Debug" writeTo="Console" />
  </rules>

</nlog>
XML

在 C# 代碼中,請確保從 nlog.config 文件加載 NLog 配置。您通常在應用程式的啟動代碼中執行此操作,例如在 ASP.NET Core 的 Startup.cs 中。(適用於.NET版本相同或早於.NET 5), program.cs 文件(適用於 .NET 6 或更高版本)或控制台應用程式的 Main 方法:

internal class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    static void Main(string [] args)
    {
        logger.Debug("This is Debug Message");
        Console.Read();
    }
}
internal class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    static void Main(string [] args)
    {
        logger.Debug("This is Debug Message");
        Console.Read();
    }
}

上述程式的輸出為:

Nlog Csharp Guide 2 related to 配置文件

在此範例中,我們創建 Logger 類別的實例並使用它來記錄調試級別的訊息。 讓我們來探討 NLog 支援的追蹤層級。

日誌等級

NLog 支援多種日誌級別,每個級別都有其自身的重要性:

  1. 追蹤:最高詳細級別,通常用於診斷目的。

  2. 除錯:用於除錯訊息,在開發過程中可能有幫助。

  3. 資訊:有關應用程式操作的一般資訊。

  4. 警告:表示潛在的問題,但不會中斷應用程式。

  5. 錯誤:表示應該調查的失敗情況,但不一定會使應用程式崩潰。

  6. 致命錯誤:表示應立即處理的重大故障。

    通過將日誌消息分類為這些等級,您可以根據其嚴重性輕鬆篩選和優先處理它們。

    在您的 nLog.Config 文件的 rules 標籤中設置 minlevel="Trace",如下所示。

<rules>
  <!-- All messages with a minimum log level of Trace or higher are written to the Console -->
  <logger name="*" minlevel="Trace" writeTo="Console" />
</rules>
XML

讓我們寫一段程式碼來記錄所有追蹤級別的訊息。

internal class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    static void Main(string [] args)
    {
        logger.Trace("This is Trace Message");
        logger.Debug("This is Debug Message");
        logger.Info("This is Info Message");
        logger.Warn("This is Warning Message");
        logger.Error("This is Error Message");
        logger.Fatal("This is Fatal Message");
        Console.Read();
    }
}
internal class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    static void Main(string [] args)
    {
        logger.Trace("This is Trace Message");
        logger.Debug("This is Debug Message");
        logger.Info("This is Info Message");
        logger.Warn("This is Warning Message");
        logger.Error("This is Error Message");
        logger.Fatal("This is Fatal Message");
        Console.Read();
    }
}

我們的程式已在主控台中記錄了如下所示的訊息。

nlog 日誌訊息

現在,我們已經展示了在控制台中記錄訊息的範例,接下來我們將配置 NLog 目標以將訊息記錄在文件中。

文件中的記錄消息

我們需要在配置文件中設定一個文件目標來替代 Console 目標以便進行文件記錄。

  <targets>
  <target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>

<rules>
  <logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
XML

現在,運行程式以將訊息記錄在檔案中。

Nlog Csharp Guide 4 related to 文件中的記錄消息

日誌目標

NLog 支援多種日誌輸出目標,讓您可以選擇日誌訊息應儲存的位置。 一些常見的目標包括:

  1. 檔案:將訊息記錄到一個或多個檔案中。

  2. 控制台:將消息記錄到控制台。

  3. 資料庫:將訊息記錄到資料庫中(SQL Server、MySQL、Oracle、PostgreSQL 等。)表格

  4. 電子郵件:將日誌消息發送為電子郵件。

  5. 事件日誌:將訊息記錄到 Windows 事件日誌。

  6. 自訂目標:您可以創建自訂日誌目標以滿足您的特定需求。

    您可以配置 NLog 同時使用一個或多個目標。

介紹 IronPDF

進一步探索 IronPDF是一個強大的 .NET 函式庫,簡化了 C# 和 VB.NET 應用程式中的 PDF 處理。 它提供了強大的功能來創建、編輯和操作 PDF 文檔,以及將 HTML 內容轉換為 PDF 格式,使其成為包括網頁開發、報告和文件管理在內的各行業開發人員不可或缺的工具。

IronPDF的突出功能是其HTML 轉 PDF函式,保留您的版面配置和樣式。 它從網頁內容生成 PDF,這使其非常適合用於報告、發票和文檔。 HTML 文件、URL 和 HTML 字串可以輕鬆轉換為 PDF。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

讓我們生成具有日誌記錄的 PDF。

具有日誌記錄的 PDF 生成

第一步是將IronPDF庫安裝到我們的專案中。 我們可以使用 Visual Studio 中的 NuGet 套件管理器或通過 NuGet CLI 來做到這一點。 打開您的專案,然後在「套件管理員主控台」中輸入以下命令。

Install-Package IronPdf

此命令將在我們的項目中安裝 IronPDF 及其所有必需的依賴項。

撰寫以下代碼以自 HTML 生成 PDF 文件並進行日誌記錄。

private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string [] args)
{
    logger.Info("Initializing Chrome PDF Renderer");
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    logger.Info("Creating PDF From HTML String");
    var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
    logger.Info("Saving PDF File");
    pdf.SaveAs(@"D:\myPDF.pdf");
}
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string [] args)
{
    logger.Info("Initializing Chrome PDF Renderer");
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    logger.Info("Creating PDF From HTML String");
    var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
    logger.Info("Saving PDF File");
    pdf.SaveAs(@"D:\myPDF.pdf");
}

上述程式碼片段將創建一個PDF文件,文件中會包含如下所示的日誌消息。

日誌和 PDF 檔案

Nlog Csharp Guide 5 related to 日誌和 PDF 檔案

結論

總之,NLog 已成為 C# 應用程式中有效記錄日誌的重要工具,為開發者提供了一個強大的框架來擷取、分類和管理日誌數據。 其靈活性和易用性使其成為各個領域記錄需求的首選。 此外,當與諸如 IronPDF 此類互補的庫結合使用時,開發者可以簡化 .NET 應用程式中的 PDF 生成和操作,並能夠擴展其管理能力以涵蓋基於 PDF 的日誌和報告的創建。 值得一提的是,IronPDF 提供IronPDF 免費試用版測試其功能。 如果符合您的要求,您可以選擇一個IronPDF 商業許可証,提供持續使用IronPDF功能的機會,並增加了優勢和支援,使其能夠無縫地整合到您的專案中,特別是針對PDF相關功能。

通過結合使用NLog和IronPDF的力量,開發人員不僅可以深入了解其應用程式的行為,還能增強其報告和文檔管理過程,確保其軟體保持高效、易於維護並具備良好文件結構的日誌記錄。

Kannaopat Udonpant
坎納帕特·烏頓潘
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源博士學位。在攻讀學位期間,Kannapat 也成為了車輛機器人實驗室的成員,該實驗室隸屬於生物生產工程學系。2022 年,他利用自己的 C# 技能,加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。Kannapat 珍視這份工作,因為他可以直接向負責撰寫大部分 IronPDF 程式碼的開發人員學習。除了同儕學習外,Kannapat 還享受在 Iron Software 工作的社交方面。當他不在撰寫程式碼或文件時,Kannapat 通常會在 PS5 上玩遊戲或重看《最後生還者》。
< 上一頁
C# ref 關鍵字(開發者如何運作)
下一個 >
Entity Framework C#(開發人員的工作原理)