.NET 幫助

Microsoft 日誌記錄 C#(開發者如何運作)

介紹

記錄是 C# 中的一項基本技術,它可以在應用程式運行時捕捉資訊、警告、錯誤和其他相關數據。 它幫助開發人員監控他們的程序行為,排除故障,並了解應用程式在不同情境中的運作方式。 C# 提供了一些日誌框架和套件,以使日誌工作更簡單。 Microsoft.Extensions.Logging 是 .NET Core 應用程式中使用最廣泛的記錄框架之一。 Microsoft.Extensions.Logging NuGet 套件適用於 .NET Core,為我們提供了多種擴展方法,幫助我們編寫不同的日誌級別。 在本文中,我們將深入瞭解 MS 日誌記錄。

如何設置 MS 日誌記錄

  1. 創建一個新的Visual Studio項目。

  2. NuGet 上的 Microsoft.Extensions.Logging 套件頁面安裝Microsoft.Extensions.Logging函式庫。

  3. Logger介面注入控制台。

  4. 配置日志输出。

  5. 在不同級別寫日誌。

  6. 運行程式碼。

步驟 1:創建一個新的 Visual Studio 專案

要開始,請在 Visual Studio 中創建一個新專案。

步驟 2:安裝 Microsoft.Extensions.Logging 函式庫

請使用NuGet 的 Microsoft.Extensions.Logging 套件頁面安裝Microsoft.Extensions.Logging庫。 此程式庫提供用於 .NET Core 應用程式中日誌記錄所需的類別和方法。

步驟 3:將 Logger 介面注入到控制台中

要使用日誌功能,您需要將 Logger 介面的實例注入到您的控制台應用程式中。 這可以通過使用依賴注入框架或手動創建Logger類的實例來完成。

using Microsoft.Extensions.Logging;

// Inject the logger into the console
ILogger logger = LoggerFactory.Create(builder =>
{
    builder.AddConsole();
}).CreateLogger<Program>();
using Microsoft.Extensions.Logging;

// Inject the logger into the console
ILogger logger = LoggerFactory.Create(builder =>
{
    builder.AddConsole();
}).CreateLogger<Program>();
Imports Microsoft.Extensions.Logging

' Inject the logger into the console
Private logger As ILogger = LoggerFactory.Create(Sub(builder)
	builder.AddConsole()
End Sub).CreateLogger<Program>()
$vbLabelText   $csharpLabel

步驟 4:配置日誌輸出

配置日誌的輸出方式。 這可以透過將一個或多個日誌提供者添加到記錄器建構器來完成。 最常見的提供者是控制台記錄器,它將日誌輸出到控制台。

builder.AddConsole(options =>
{
    options.TimestampFormat = "[HH:mm:ss] ";
});
builder.AddConsole(options =>
{
    options.TimestampFormat = "[HH:mm:ss] ";
});
builder.AddConsole(Sub(options)
	options.TimestampFormat = "[HH:mm:ss] "
End Sub)
$vbLabelText   $csharpLabel

步驟 5:在不同層級撰寫日誌

您現在可以使用記錄器物件在不同級別編寫日誌。 可用的記錄方法有 LogDebug()LogInformation()LogWarning()LogError()LogCritical()

logger.LogDebug("This is a debug message");
logger.LogInformation("This is an information message");
logger.LogWarning("This is a warning message");
logger.LogError("This is an error message");
logger.LogCritical("This is a critical message");
logger.LogDebug("This is a debug message");
logger.LogInformation("This is an information message");
logger.LogWarning("This is a warning message");
logger.LogError("This is an error message");
logger.LogCritical("This is a critical message");
logger.LogDebug("This is a debug message")
logger.LogInformation("This is an information message")
logger.LogWarning("This is a warning message")
logger.LogError("This is an error message")
logger.LogCritical("This is a critical message")
$vbLabelText   $csharpLabel

步驟 6:執行程式碼

最後,運行你的程式並觀察根據配置設定輸出的日誌。

就是這樣! 您已成功在 C# 應用程式中設定並使用 MS 日誌記錄。

安裝 MS Logging

若要安裝 MS Logging,請遵循以下步驟:

  1. 啟動 Visual Studio。

  2. 導航至 工具 > NuGet 套件管理員 > 套件管理員主控台

  3. 在套件管理器主控台中,執行以下指令:
    Install-Package Microsoft.Extensions.Logging
  1. 按下Enter鍵以執行命令。 這將下載並安裝Microsoft.Extensions.Logging套件到您的專案中。

日誌級別

C# 中的 Microsoft.Extensions.Logging 框架提供多種日誌級別,讓開發人員可以根據消息的重要性和嚴重性對日誌訊息進行分類和排序。 這些等級經常用來區分各種消息類型,並協助調節日誌的詳細程度。

Microsoft.Extensions.Logging提供的默認日誌層級如下:

  • 追蹤:最詳盡的級別,通常用於提供極其詳細的數據,以深入了解程式的內在運作。
  • 調試:在開發和調試階段有用的調試資訊,但在生產環境中通常不需要。
  • 資訊:提供有關應用程式正常運作方式的詳細說明。 通常,這些日誌用於監控程式的正常運行。
  • 警告:指出可能的問題或將來可能需要注意的事項。 它用於可能導致問題但不一定會導致程式崩潰的異常或意外情況。
  • 錯誤:指示需要立即修復的嚴重問題或錯誤。 通常用於記錄影響應用程式運作的問題。
  • 嚴重:最嚴重的狀態,用於記錄需要立即解決的關鍵問題,因為這些問題可能會導致嚴重問題或程式崩潰。

    每個日誌級別都有特定的用途,讓開發人員能夠管理日誌框架輸出的數據量。 開發人員可以根據記錄資料的嚴重性和重要性選擇適當的訊息記錄等級。

配置 C# 記錄

以下是一個如何使用Microsoft.Extensions.Logging配置日誌記錄的基本示例:

using Microsoft.Extensions.Logging;
using System;

class Program
{
    // Create a LoggerFactory instance
    private static readonly ILoggerFactory LoggerFactory = LoggerFactory.Create(builder =>
    {
        // Add console logger
        builder.AddConsole();
        // You can add other logging providers here (e.g., AddDebug, AddFile, etc.)
    });

    // Create a logger
    private static readonly ILogger Logger = LoggerFactory.CreateLogger<Program>();

    static void Main(string [] args)
    {
        // Example log messages
        Logger.LogInformation("Information log");
        Logger.LogWarning("Warning log");
        Logger.LogError("Error log");

        try
        {
            // Simulate an exception
            throw new Exception("Exception occurred");
        }
        catch (Exception ex)
        {
            // Log exception details
            Logger.LogError(ex, "Exception log");
        }

        Console.ReadKey();
    }
}
using Microsoft.Extensions.Logging;
using System;

class Program
{
    // Create a LoggerFactory instance
    private static readonly ILoggerFactory LoggerFactory = LoggerFactory.Create(builder =>
    {
        // Add console logger
        builder.AddConsole();
        // You can add other logging providers here (e.g., AddDebug, AddFile, etc.)
    });

    // Create a logger
    private static readonly ILogger Logger = LoggerFactory.CreateLogger<Program>();

    static void Main(string [] args)
    {
        // Example log messages
        Logger.LogInformation("Information log");
        Logger.LogWarning("Warning log");
        Logger.LogError("Error log");

        try
        {
            // Simulate an exception
            throw new Exception("Exception occurred");
        }
        catch (Exception ex)
        {
            // Log exception details
            Logger.LogError(ex, "Exception log");
        }

        Console.ReadKey();
    }
}
Imports Microsoft.Extensions.Logging
Imports System

Friend Class Program
	' Create a LoggerFactory instance
	Private Shared ReadOnly LoggerFactory As ILoggerFactory = LoggerFactory.Create(Sub(builder)
		' Add console logger
		builder.AddConsole()
		' You can add other logging providers here (e.g., AddDebug, AddFile, etc.)
	End Sub)

	' Create a logger
	Private Shared ReadOnly Logger As ILogger = LoggerFactory.CreateLogger(Of Program)()

	Shared Sub Main(ByVal args() As String)
		' Example log messages
		Logger.LogInformation("Information log")
		Logger.LogWarning("Warning log")
		Logger.LogError("Error log")

		Try
			' Simulate an exception
			Throw New Exception("Exception occurred")
		Catch ex As Exception
			' Log exception details
			Logger.LogError(ex, "Exception log")
		End Try

		Console.ReadKey()
	End Sub
End Class
$vbLabelText   $csharpLabel

在此範例中,加入了一個主控台記錄器到記錄配置中,將日誌寫到主控台。 然而,Microsoft.Extensions.Logging 提供多種日誌提供者,包括記錄到檔案、資料庫,或連接到其他日誌框架。 此外,還可以創建自定義的日誌提供程序,以根據特定需求格式化日誌。

包括額外的提供者進行日誌記錄

您可以通過在Create()函數內鏈接相關方法來新增其他日誌來源。 例如:

  • 要新增偵錯輸出記錄提供者,請使用builder.AddDebug()
  • 要添加文件日志提供程序,請使用builder.AddFile("log.txt")

MSLogging 在 IronPDF 上

IronPDF 在HTML 到 PDF轉換中表現優異,確保精確保留原始佈局和樣式。 它非常適合從基於網絡的內容(如報告、發票和文檔)創建PDF。 IronPDF 支援 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

若要在 IronPDF 中啟用日誌記錄,您可以使用 Microsoft.Extensions.Logging 框架與 IronPDF 的內建日誌記錄功能搭配使用。 以下是如何在 IronPDF 中設置日誌記錄的範例:

using Microsoft.Extensions.Logging;
using IronPdf;

class Program
{
    static void Main(string [] args)
    {
        ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
        {
            builder
                .AddConsole()
                .AddDebug();
        });

        ILogger<Program> logger = loggerFactory.CreateLogger<Program>();

        // Enable logging in IronPDF
        Logger.Log = new LoggerImplementation(logger);

        // Use IronPDF and perform operations
        // ...

        // Example of logging an error in IronPDF
        Logger.Log.Error("An error occurred while processing the PDF");

        // Example of logging a warning in IronPDF
        Logger.Log.Warning("This is a warning message");

        // Example of logging an information message in IronPDF
        Logger.Log.Information("This is an information message");

        // ...

        // Close and dispose resources
        // ...

        // Flush the log messages
        loggerFactory.Dispose();
    }
}
using Microsoft.Extensions.Logging;
using IronPdf;

class Program
{
    static void Main(string [] args)
    {
        ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
        {
            builder
                .AddConsole()
                .AddDebug();
        });

        ILogger<Program> logger = loggerFactory.CreateLogger<Program>();

        // Enable logging in IronPDF
        Logger.Log = new LoggerImplementation(logger);

        // Use IronPDF and perform operations
        // ...

        // Example of logging an error in IronPDF
        Logger.Log.Error("An error occurred while processing the PDF");

        // Example of logging a warning in IronPDF
        Logger.Log.Warning("This is a warning message");

        // Example of logging an information message in IronPDF
        Logger.Log.Information("This is an information message");

        // ...

        // Close and dispose resources
        // ...

        // Flush the log messages
        loggerFactory.Dispose();
    }
}
Imports Microsoft.Extensions.Logging
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim loggerFactory As ILoggerFactory = LoggerFactory.Create(Sub(builder)
			builder.AddConsole().AddDebug()
		End Sub)

		Dim logger As ILogger(Of Program) = loggerFactory.CreateLogger(Of Program)()

		' Enable logging in IronPDF
		Logger.Log = New LoggerImplementation(logger)

		' Use IronPDF and perform operations
		' ...

		' Example of logging an error in IronPDF
		Logger.Log.Error("An error occurred while processing the PDF")

		' Example of logging a warning in IronPDF
		Logger.Log.Warning("This is a warning message")

		' Example of logging an information message in IronPDF
		Logger.Log.Information("This is an information message")

		' ...

		' Close and dispose resources
		' ...

		' Flush the log messages
		loggerFactory.Dispose()
	End Sub
End Class
$vbLabelText   $csharpLabel

在此示例中,我們從Microsoft.Extensions.Logging框架中創建一個LoggerFactory實例。 然後,我們從工廠為Program類別創建一個記錄器。

要在 IronPDF 中啟用日誌記錄,我們將靜態的 Logger.Log 屬性設定為從 loggerFactory 獲取日誌記錄器的 LoggerImplementation 實例。 使用此配置,您可以使用Logger.Log方法在IronPDF中記錄消息。

在使用 IronPDF 執行必要的操作後,您可以關閉並釋放資源,然後通過處置 loggerFactory 來清除日誌消息。

注意:確保您已安裝必要的依賴項和軟體包,用於Microsoft.Extensions.Logging和IronPDF。

安裝 IronPDF

要安裝IronPDF庫,請遵循以下步驟:

  1. 在 Visual Studio 中打開套件管理器控制台。

  2. 輸入以下命令使用NuGet安裝IronPDF庫:
Install-Package IronPdf

或者,您可以在終端中運行以下命令來使用 .NET CLI:

dotnet add package IronPdf
dotnet add package IronPdf
SHELL
  1. 按下Enter鍵以執行命令。 這將下載並安裝IronPDF封裝到您的專案中。

    也可以使用 NuGet 套件管理器 GUI 安裝 IronPDF 庫。 只需在「瀏覽」選項卡中搜索「IronPDF」套件,從列表中選擇所需的套件,然後安裝最新版本的 IronPDF。

    安裝完成後,您可以開始在您的專案中使用IronPDF庫。

使用 IronPDF 的 MS 日誌記錄

截至 2022 年 1 月,IronPDF 不直接與 Microsoft.Extensions.Logging 互動,且未原生支援。 IronPDF 主要用作在 C# 程式中創建和修改 PDF 的工具。

不過,您仍然可以使用 Microsoft.Extensions 來整合日誌記錄。 透過將日誌記錄整合到您的 C# 程式中,並結合使用 IronPDF,您可以管理和記錄與 PDF 生成、應用程式工作流程或使用 IronPDF 時發生的問題相關的事件。

以下是一個如何使用 Microsoft.Extensions 與 IronPDF 整合日誌記錄的範例:

using Microsoft.Extensions.Logging;
using IronPdf;
using System;

class Program
{
    private static readonly ILoggerFactory LoggerFactory = LoggerFactory.Create(builder =>
    {
        builder.AddConsole(); // Add other logging providers as needed
    });

    private static readonly ILogger Logger = LoggerFactory.CreateLogger<Program>();

    static void Main(string [] args)
    {
        try
        {
            // Your IronPDF code for PDF generation or manipulation
            var Renderer = new IronPdf.HtmlToPdf();
            var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
            PDF.SaveAs("Output.pdf");
            Logger.LogInformation("PDF created successfully.");
        }
        catch (Exception ex)
        {
            Logger.LogError(ex, "An error occurred while generating the PDF.");
        }

        Console.ReadKey();
    }
}
using Microsoft.Extensions.Logging;
using IronPdf;
using System;

class Program
{
    private static readonly ILoggerFactory LoggerFactory = LoggerFactory.Create(builder =>
    {
        builder.AddConsole(); // Add other logging providers as needed
    });

    private static readonly ILogger Logger = LoggerFactory.CreateLogger<Program>();

    static void Main(string [] args)
    {
        try
        {
            // Your IronPDF code for PDF generation or manipulation
            var Renderer = new IronPdf.HtmlToPdf();
            var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
            PDF.SaveAs("Output.pdf");
            Logger.LogInformation("PDF created successfully.");
        }
        catch (Exception ex)
        {
            Logger.LogError(ex, "An error occurred while generating the PDF.");
        }

        Console.ReadKey();
    }
}
Imports Microsoft.Extensions.Logging
Imports IronPdf
Imports System

Friend Class Program
	Private Shared ReadOnly LoggerFactory As ILoggerFactory = LoggerFactory.Create(Sub(builder)
		builder.AddConsole() ' Add other logging providers as needed
	End Sub)

	Private Shared ReadOnly Logger As ILogger = LoggerFactory.CreateLogger(Of Program)()

	Shared Sub Main(ByVal args() As String)
		Try
			' Your IronPDF code for PDF generation or manipulation
			Dim Renderer = New IronPdf.HtmlToPdf()
			Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
			PDF.SaveAs("Output.pdf")
			Logger.LogInformation("PDF created successfully.")
		Catch ex As Exception
			Logger.LogError(ex, "An error occurred while generating the PDF.")
		End Try

		Console.ReadKey()
	End Sub
End Class
$vbLabelText   $csharpLabel

此範例展示了一種在使用IronPDF的C#應用程式中設置Microsoft.Extensions.Logging的簡單方法。 記錄訊息會被生成以記錄成功創建 PDF 的過程,並記錄可能發生的任何異常。

確保根據您的應用程序的特定需求以及使用IronPDF進行PDF創建或修改的場景,自訂日誌級別、錯誤處理和消息。 正確區分不同類型的日誌訊息,使用日誌等級可以對有效的偵錯和監控很有幫助。

如需了解更多有關IronPDF的資訊,請造訪IronPDF首頁

結論

總之,整合 Microsoft.Extensions.Logging 允許 C# 開發人員有效地處理日誌記錄任務。 IronPDF 提供全面的日誌記錄功能,使應用程式的事件、故障和重要數據能夠被徹底記錄、分析和報告。 這增強了應用程式的可靠性、維護性和除錯能力。

IronPDF 提供不同的軟體產品,包括價格為 $749 的 Lite 套裝。 此套裝包括永久許可證、升級選項、一年軟體維護以及三十天退款保證。 在有浮水印的試用期內,您可以探索IronPDF的功能。 要了解有關 Iron Software 提供的軟體產品之更多資訊,請造訪Iron Software 的官方網站

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
Cefsharp.WPF.NET Core(開發人員如何運作)
下一個 >
Serilog .NET(開發者使用方式)