在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
日誌記錄是軟體開發中的重要方面。它有助於開發人員跟蹤其應用程式的行為,排除問題並深入了解其代碼在各種環境中的性能。NLog 是一個受歡迎的 C# 日誌記錄框架,使您能夠輕鬆地在應用程式中實施穩健且靈活的日誌記錄。在這本綜合指南和教程中,我們將探索 C# 中 NLog 的世界。
NLog 是一個針對.NET和.NET Core應用程式的免費開源日誌記錄庫。它提供了一種靈活且高度可配置的方法來記錄應用程式中的訊息。NLog因其效能、擴展性和易用性,在.NET生態系統中是一個廣泛使用的免費日誌記錄平台。
我們可以在 ASP.NET 網頁應用程式、ASP.NET WEB API、Windows 表單應用程式、ASP.NET MVC 應用程式或任意種類的應用程式中使用 NLog,以滿足我們的需求。我們將使用主控台應用程式來展示所有的使用案例。
要開始使用 NLog,您需要在您的專案中安裝 NLog NuGet 套件。您可以通過 Visual Studio 中的 NuGet 套件管理器來完成,請按照以下步驟:
在 NuGet 套件管理器窗口的右側,有一個包含您解決方案中專案的列表。選擇該專案。(s) 您想安裝 NLog 的位置。
從版本下拉菜單中選擇所需的 NLog 套件版本。您可以選擇最新的穩定版本或特定版本(如果需要)。
NuGet 套件管理器將下載並安裝 NLog 及任何相依性。您將會在輸出窗口中查看進度。
NLog 現已成功安裝到您的專案中,您可以開始在您的 C# 程式碼中使用它進行日誌記錄。
要創建一個 NLog 配置檔案 (通常命名為 nlog.config)按照以下步驟操作。該配置文件將指定NLog在您的應用程式中應如何運作,包括日誌目標、佈局渲染器和規則。
在您的項目中,右鍵點擊項目或希望創建配置文件的文件夾。
將文件命名為 nlog.config,然後點擊 "添加" 按鈕。
在文字編輯器或 XML 編輯器中打開新建的 nlog.config 檔案。
<?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>
在 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
上述程式的輸出結果如下:
在這個示例中,我們創建了一個 Logger 類的實例,並使用它在 Debug 級別記錄消息。讓我們探索 NLog 支持的跟蹤級別。
NLog 支援多個日誌等級,每個都有其特定意義:
通過將日誌消息分類到這些等級中,您可以根據其嚴重程度輕鬆過濾和優先處理它們。
在您的 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>
讓我們寫一段程式碼來記錄所有追蹤級別的訊息。
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
我們的程式在控制台中記錄了如下所示的訊息。
現在,我們已經展示了在控制台記錄訊息的範例,現在我們將配置 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>
現在,運行程式將訊息記錄到檔案中。
NLog 支援各種日誌輸出目標,允許您選擇將日誌訊息儲存在哪裡。一些常見的目標包括:
檔案:將訊息記錄到一個或多個檔案中。
控制台:將訊息記錄到控制台。
資料庫:將訊息記錄到資料庫。 (SQL Server、MySQL、Oracle、PostgreSQL 等。) 表格。
電子郵件:以電子郵件的形式發送日誌訊息。
事件日誌:將訊息記錄到Windows事件日誌中。
您可以配置NLog同時使用一個或多個目標。
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
讓我們生成具有日誌記錄的 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
上述程式碼片段將創建一個PDF文件,文件中會包含如下所示的日誌消息。
總而言之,NLog 已經成為在 C# 應用程式中進行高效日誌記錄的必要工具,為開發人員提供了一個強大的框架來捕獲、分類和管理日誌資料。其靈活性和易用性使其成為各種領域日誌需求的首選。此外,當與 IronPDF 等互補的庫結合使用時,IronPDF 簡化了 .NET 應用程式中的 PDF 生成和操作,開發人員可以擴展其管理能力,涵蓋基於 PDF 的日誌和報告的創建。值得一提的是,IronPDF 提供了 免費試用 來測試它的功能。如果符合您的需求,您可以選擇 商業授權, 提供持續訪問IronPDF的功能,並帶來額外的好處和支援,以無縫整合到您的專案,特別是與PDF相關的功能。
通過結合NLog和IronPDF的強大功能,開發人員不僅可以深入了解其應用程式的行為,還可以增強其報告和文件管理流程,確保其軟體保持高效、可維護和良好記錄的結構化日誌記錄。