跳至頁尾內容
開發者更新

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

記錄是軟體開發的重要方面。 它幫助開發人員追蹤應用程式的行為、排除故障問題,並深入了解其程式碼在各種環境中的執行情況。 NLog 是 C# 的一個受歡迎的記錄框架,使得在您的應用程式中實現強大而靈活的記錄變得容易。 在這本綜合指南和教程中,我們將探索 C# 中的 NLog 世界。

什麼是 NLog?

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

開始使用 NLog

我們可以在 ASP.NET Web 應用、ASP.NET WEB API、Windows Form 應用、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 文件中新增以下配置。以下是以 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">

  <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 版本相同或老於 .NET 5)、program.cs 文件(.NET 6 或更新版)或主控台應用的 Main 方法中:

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();
    }
}
Imports NLog

Friend Class Program
	' Create an instance of the Logger
	Private Shared logger As Logger = LogManager.GetCurrentClassLogger()

	Shared Sub Main(ByVal args() As String)
		' Log a debug message
		logger.Debug("This is a Debug Message")

		' Pause the console for viewing output
		Console.Read()
	End Sub
End Class
$vbLabelText   $csharpLabel

上述程式的輸出如圖所示:

Nlog Csharp Guide 2 related to 配置文件

在這個範例中,我們建立了 Logger 類的實例,並使用它記錄在 Debug 等級下的消息。 讓我們來探索 NLog 支持的跟踪等級。

記錄等級

NLog 支持多個記錄等級,每個具有其自己的重要性:

  1. 跟踪:最詳細的等級,通常用於診斷目的。
  2. 除錯:用於除錯資訊,在開發期間可以提供幫助。
  3. 資訊:關於應用程式運行的一般資訊。
  4. 警告:表示潛在問題但不破壞應用程式。
  5. 錯誤:表示一個失敗應被調查但不一定會崩潰應用程式。
  6. 嚴重:表示需要立即解決的關鍵故障。

通過將記錄消息分類到這些等級中,您可以根據其嚴重性輕鬆過濾和優先處理它們。

如下面所示,將 minlevel="Trace" 設置在 nLog.Config 文件中的規則標籤。

<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();
    }
}
Imports NLog

Friend Class Program
	' Create an instance of the Logger
	Private Shared logger As Logger = LogManager.GetCurrentClassLogger()

	Shared Sub Main(ByVal args() As String)
		' 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()
	End Sub
End Class
$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 格式,這使其成為包括網頁開發、報告和文件管理在內的廣泛行業開發者的重要工具。

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");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

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

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

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$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");
    }
}
Imports NLog
Imports IronPdf

Friend Class Program
	' Create an instance of the Logger
	Private Shared logger As Logger = LogManager.GetCurrentClassLogger()

	Shared Sub Main(ByVal args() As String)
		logger.Info("Initializing Chrome PDF Renderer")
		Dim renderer As New ChromePdfRenderer()

		logger.Info("Creating PDF From HTML String")
		Dim pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>")

		logger.Info("Saving PDF File")
		pdf.SaveAs("D:\myPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

上面的程式碼片段將建立一個 PDF 文件,其中包含一個記錄的消息,顯示如下。

日誌與 PDF 文件

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

結論

總之,NLog 已經成為在 C# 應用程式中有效記錄的必要工具,為開發者提供了一個強大的框架用於捕獲、分類和管理記錄資料。 其靈活性和易用性使其成為各種領域日誌需求的首選。 此外,當與 IronPDF 等輔助圖書館結合使用時,IronPDF 簡化了 .NET 應用程式中的 PDF 生成和操作,開發者可以擴展他們的管理功能,以涵蓋基於 PDF 的日誌和報告的建立。 值得一提的是,IronPDF 提供了 IronPDF 的免費試用 用於測試其功能。 如果符合您的需求,您可以選擇 購買 IronPDF 的商業許可證,提供對 IronPDF 功能的持續使用,以及額外的好處和支持,便於您專案中的無縫整合,特別是在 PDF 相關功能的使用中。

通過將 NLog 和 IronPDF 的功能一起使用,開發者不僅可以更深入了解其應用程式的行為,還可以增強其報告和文件管理過程,確保其軟體保持高效、易於維護並且有良好文件的結構化記錄。

常見問題

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

NLog 提供一個強大且靈活的 C# 應用程式記錄框架。它允許開發者透過在配置檔案中定義記錄目標和規則來輕鬆實現記錄,並支援各種記錄等級,如追蹤、除錯、資訊、警告、錯誤和致命。

在 .NET 應用程式中設定 NLog 的過程是什麼?

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

如何使用 NLog 記錄消息到資料庫?

要使用 NLog 記錄消息到資料庫,您需要在 nlog.config 檔案中設置資料庫目標。您將指定連接字串以及必要的資料表或預存程式詳細資訊以進行日誌項目。

NLog 可以用於通過電子郵件傳送記錄消息嗎?

是的,NLog 可以通過在 nlog.config 檔案中配置電子郵件目標來傳送記錄消息。您需要提供 SMTP 伺服器詳細資訊、收件人電子郵件地址及其他電子郵件設置。

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

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

如何在 C# 應用程式中將記錄整合到 PDF 生成中?

您可以在 C# 應用程式中使用 NLog 和 IronPDF 的組合,透過 NLog 來記錄應用程式事件並使用 IronPDF 產生 PDF。這種結合允許您建立包含記錄資訊的詳細 PDF 報告。

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

處理 NLog 配置問題的一些常見故障排除步驟包括檢查 nlog.config 檔案中的語法錯誤、確保記錄目標的正確檔案路徑和權限,以及檢查應用程式中可能影響記錄的異常。

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

IronPDF 提供免費試用,允許開發者測試其功能。此試用期提供了在選擇商業授權之前,評估 IronPDF 用於 PDF 生成、編輯和轉換的能力的機會。

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

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話