跳過到頁腳內容
.NET幫助

NLog C#(開發者的工作原理)

日誌記錄是軟體開發中不可或缺的一個環節。 它可以幫助開發者追蹤應用程式的行為,解決問題,並深入了解程式碼在各種環境下的運作情況。 NLog 是一個流行的 C# 日誌框架,它可以輕鬆地在應用程式中實現強大且靈活的日誌記錄。 在本綜合指南和教程中,我們將探索 C# 中的 NLog 世界。

什麼是NLog?

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

NLog入門

我們可以在ASP.NET Web 應用程式、 ASP.NET WEB API、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套件管理器視窗的右側,會顯示解決方案中的項目清單。 選擇要安裝 NLog 的專案。
  6. 從版本下拉式選單中選擇所需的 NLog 套件版本。 您可以選擇最新的穩定版本,也可以根據需要選擇特定版本。
  7. 選擇項目和版本後,點選"安裝"按鈕開始安裝程序。

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 檔案中新增以下配置。以下是將訊息記錄到控制台目標的 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">

  <targets>

    <target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
  </targets>

  <rules>

    <logger name="*" minlevel="Debug" writeTo="console" />
  </rules>

</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">

  <targets>

    <target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
  </targets>

  <rules>

    <logger name="*" minlevel="Debug" writeTo="console" />
  </rules>

</nlog>
XML

在你的 C# 程式碼中,確保從 nlog.config 檔案載入 NLog 配置。通常,你需要在應用程式的啟動程式碼中執行此操作,例如在ASP.NET Core Startup.cs 檔案(適用於.NET 5 或更早版本)、program.cs 檔案(適用於.NET 6 或更高版本)或控制台應用程式的 Main 方法.NET:

using NLog;

internal class Program
{
    // Create an instance of the Logger
    private static Logger logger = LogManager.GetCurrentClassLogger();

    static void Main(string[] args)
    {
        // Log a debug message
        logger.Debug("This is a Debug Message");

        // Pause the console for viewing output
        Console.Read();
    }
}
using NLog;

internal class Program
{
    // Create an instance of the Logger
    private static Logger logger = LogManager.GetCurrentClassLogger();

    static void Main(string[] args)
    {
        // Log a debug message
        logger.Debug("This is a Debug Message");

        // Pause the console for viewing output
        Console.Read();
    }
}
$vbLabelText   $csharpLabel

上述程式的輸出結果如下所示:

Nlog Csharp Guide 2 related to 設定檔

在這個例子中,我們建立了一個 Logger 類別的實例,並使用它來記錄偵錯層級的訊息。 讓我們來探討一下 NLog 支援的追蹤等級。

日誌等級

NLog 支援多種日誌級別,每種級別都有其自身的意義:

  1. 微量:最詳細的級別,通常用於診斷目的。
  2. 調試:用於調試訊息,這些資訊在開發過程中可能有所幫助。
  3. 資訊:有關應用程式運行的一般資訊。
  4. 警告:表示有潛在問題,但不會中斷應用程式運行。
  5. 錯誤:表示有需要調查的故障,但不一定會導致應用程式崩潰。
  6. 致命:表示有嚴重故障,應立即處理。

透過將日誌訊息分類到這些級別,您可以輕鬆地根據其嚴重性對其進行篩選和優先排序。

在 nLog.Config 檔案的 rules 標籤中設定 minlevel="Trace",如下所示。

<rules>

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

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

讓我們編寫程式碼來記錄所有追蹤層級的消息。

using NLog;

internal class Program
{
    // Create an instance of the Logger
    private static Logger logger = LogManager.GetCurrentClassLogger();

    static void Main(string[] args)
    {
        // Log messages of different tracking levels
        logger.Trace("This is a Trace Message");
        logger.Debug("This is a Debug Message");
        logger.Info("This is an Info Message");
        logger.Warn("This is a Warning Message");
        logger.Error("This is an Error Message");
        logger.Fatal("This is a Fatal Message");

        // Pause the console for viewing output
        Console.Read();
    }
}
using NLog;

internal class Program
{
    // Create an instance of the Logger
    private static Logger logger = LogManager.GetCurrentClassLogger();

    static void Main(string[] args)
    {
        // Log messages of different tracking levels
        logger.Trace("This is a Trace Message");
        logger.Debug("This is a Debug Message");
        logger.Info("This is an Info Message");
        logger.Warn("This is a Warning Message");
        logger.Error("This is an Error Message");
        logger.Fatal("This is a Fatal Message");

        // Pause the console for viewing output
        Console.Read();
    }
}
$vbLabelText   $csharpLabel

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

nlog日誌訊息

現在,我們已經示範如何在控制台中記錄訊息。 現在我們將配置一個 NLog 目標,將訊息記錄到檔案中。

文件中的日誌訊息

我們需要在設定檔中設定檔案目標,而不是控制台目標,才能進行檔案日誌記錄。

<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>
<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 格式的功能,使其成為包括 Web 開發、報告和文件管理在內的眾多行業開發人員的必備工具。

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");
    }
}
$vbLabelText   $csharpLabel

讓我們產生一個帶有日誌記錄的 PDF 檔案。

帶有日誌記錄的 PDF 生成

第一步是將IronPDF庫安裝到我們的專案中。 我們可以使用 Visual Studio 中的NuGet套件管理器或透過NuGet CLI 來完成此操作。 打開你的項目,並在套件管理器控制台中輸入以下命令。

Install-Package IronPdf

此指令會將IronPDF及其所有必要的依賴項安裝到我們的專案中。

編寫以下程式碼,從 HTML 產生 PDF 文件並記錄日誌。

using NLog;
using IronPdf;

internal class Program
{
    // Create an instance of the Logger
    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");
    }
}
using NLog;
using IronPdf;

internal class Program
{
    // Create an instance of the Logger
    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");
    }
}
$vbLabelText   $csharpLabel

上述程式碼片段將建立一個 PDF 文件,並在文件中記錄如下所示的訊息。

日誌和PDF文件

Nlog Csharp Guide 5 related to 日誌和PDF文件

結論

總之,NLog 已成為 C# 應用程式中有效日誌記錄的重要工具,為開發人員提供了一個強大的框架,用於擷取、分類和管理日誌資料。 其靈活性和易用性使其成為滿足各種領域日誌記錄需求的理想選擇。 此外,當與IronPDF等互補庫結合使用時,開發人員可以簡化.NET應用程式中的 PDF 生成和操作,從而擴展其管理功能,使其能夠建立基於 PDF 的日誌和報告。 值得一提的是, IronPDF提供免費試用版,供IronPDF測試其各項功能。 如果符合您的要求,您可以選擇IronPDF的商業許可證,繼續使用 IronPDF 的各項功能,並獲得額外的好處和支持,以便無縫整合到您的專案中,特別是與 PDF 相關的功能。

透過結合 NLog 和IronPDF ,開發人員不僅可以深入了解應用程式的行為,還可以增強其報告和文件管理流程,從而確保其軟體保持高效、可維護和文件完善的結構化日誌記錄。

常見問題解答

NLog 如何增強 C# 應用程式中的日誌記錄?

NLog 為 C# 應用程式提供了一個強大且靈活的日誌框架。它允許開發者通過在配置檔中定義日誌目標和規則來輕鬆實現日誌記錄,支持如 Trace、Debug、Info、Warn、Error 和 Fatal 等各種日誌級別。

設置 NLog 在 .NET 應用程式中的流程是什麼?

要在 .NET 應用程式中設置 NLog,您需要安裝 NLog NuGet 套件並在 nlog.config 檔中配置日誌目標和規則。此設置允許您指定日誌的定向位置,例如文件、控制台、數據庫或電子郵件。

如何使用 NLog 將訊息記錄到數據庫?

要使用 NLog 將訊息記錄到數據庫,您需要在 nlog.config 檔中設置一個數據庫目標。您將指定連接字串以及日誌條目所需的表或存儲過程詳細信息。

NLog 能否用於通過電子郵件發送日誌訊息?

是的,NLog 可以通過在 nlog.config 檔中配置一個電子郵件目標來發送電子郵件日誌訊息。您需要提供 SMTP 服務器詳細信息、收件人電子郵件地址和其他電子郵件設置。

在 .NET 中使用 IronPDF 生成 PDF 的好處是什麼?

IronPDF 是一個強大的 .NET 函式庫,簡化了 PDF 生成、編輯和轉換。它支持 HTML 到 PDF 的轉換,允許開發者從 HTML 字串、文件或 URL 生成 PDF,增強報告和文件管理流程。

如何在 C# 應用程式中將日誌記錄與 PDF 生成集成?

您可以通過使用 NLog 來記錄應用程式事件和使用 IronPDF 來生成 PDF,將 NLog 與 IronPDF 集成到 C# 應用程式中。這種組合允許您創建包括日誌信息的詳細 PDF 報告。

NLog 配置問題的一些常見故障排除步驟是什麼?

NLog 配置問題的常見故障排除步驟包括驗證 nlog.config 檔中的語法錯誤,確保日誌目標的正確文件路徑和權限,並檢查可能影響日誌記錄的應用程式中的異常。

在購買之前,我如何測試 IronPDF 的功能?

IronPDF 提供免費試用,允許開發者測試其功能。此試用期提供了一個機會來評估 IronPDF 的 PDF 生成、編輯和轉換能力,然後再選擇商業許可證。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me