.NET 幫助

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

發佈 2023年10月30日
分享:

日誌記錄是軟體開發中的重要方面。它有助於開發人員跟蹤其應用程式的行為,排除問題並深入了解其代碼在各種環境中的性能。NLog 是一個受歡迎的 C# 日誌記錄框架,使您能夠輕鬆地在應用程式中實施穩健且靈活的日誌記錄。在這本綜合指南和教程中,我們將探索 C# 中 NLog 的世界。

什麼是 NLog?

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

開始使用 NLog

我們可以在 ASP.NET 網頁應用程式、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 套件管理器窗口的右側,有一個包含您解決方案中專案的列表。選擇該專案。(s) 您想安裝 NLog 的位置。

  6. 從版本下拉菜單中選擇所需的 NLog 套件版本。您可以選擇最新的穩定版本或特定版本(如果需要)。

  7. 選擇專案後(s) 以及版本,點擊「安裝」按鈕以開始安裝過程。

NuGet 套件管理器將下載並安裝 NLog 及任何相依性。您將會在輸出窗口中查看進度。

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

創建 NLog 配置檔案

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

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

  1. 選擇 "添加" > "新建項目..."
  2. 在 "添加新項目" 對話框中,搜索 "XML文件" 或 "XML" 並選擇它。
  3. 將文件命名為 nlog.config,然後點擊 "添加" 按鈕。

  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();
    }
}
Friend Class Program
	Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
	Shared Sub Main(ByVal args() As String)
		logger.Debug("This is Debug Message")
		Console.Read()
	End Sub
End Class
VB   C#

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

在這個示例中,我們創建了一個 Logger 類的實例,並使用它在 Debug 級別記錄消息。讓我們探索 NLog 支持的跟蹤級別。

日誌等級

NLog 支援多個日誌等級,每個都有其特定意義:

  1. Trace: 最詳細的等級,通常用於診斷目的。
  2. Debug: 用於在開發過程中有助於調試的資訊。
  3. Info: 有關應用程式操作的一般資訊。
  4. Warn: 指出潛在的問題,但不會中斷應用程式。
  5. Error: 指出應該調查的故障,但不一定會導致應用程式崩潰。
  6. Fatal: 指出應立即處理的嚴重故障。

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

在您的 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();
    }
}
Friend Class Program
	Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
	Shared Sub Main(ByVal args() As String)
		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()
	End Sub
End Class
VB   C#

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

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>
XML

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

紀錄目標

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
VB   C#

讓我們生成具有日誌記錄的 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");
}
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
VB   C#

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

日誌和 PDF 檔案

結論

總而言之,NLog 已經成為在 C# 應用程式中進行高效日誌記錄的必要工具,為開發人員提供了一個強大的框架來捕獲、分類和管理日誌資料。其靈活性和易用性使其成為各種領域日誌需求的首選。此外,當與 IronPDF 等互補的庫結合使用時,IronPDF 簡化了 .NET 應用程式中的 PDF 生成和操作,開發人員可以擴展其管理能力,涵蓋基於 PDF 的日誌和報告的創建。值得一提的是,IronPDF 提供了 免費試用 來測試它的功能。如果符合您的需求,您可以選擇 商業授權, 提供持續訪問IronPDF的功能,並帶來額外的好處和支援,以無縫整合到您的專案,特別是與PDF相關的功能。

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

< 上一頁
C# ref 關鍵字(開發者如何運作)
下一個 >
Entity Framework C#(開發人員的工作原理)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >