.NET 帮助

Microsoft Logging C#(对开发者的工作原理)

介绍

日志是 C# 中的一项基本技术,可在应用程序运行时捕获信息、警告、错误和其他相关数据。 它可以帮助开发人员关注他们的程序如何运行、排除故障并理解应用程序在各种情况下的功能。 C# 提供了一些日志记录框架和软件包,使日志记录工作更加轻松。 Microsoft.Extensions.Logging 是 .NET Core 应用程序中最广泛使用的日志框架之一。 Microsoft.Extensions.Logging NuGet 包用于 .NET Core,提供了多个扩展方法,帮助我们记录不同的日志级别。 在本文中,我们将进一步了解 MS logging。

如何设置 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类的实例来完成。

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 日志

要安装 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 提供的默认日志级别如下:

  • Trace:这是最详尽的级别,通常用于提供非常详细的数据,以深入了解程序的内部运作。
  • 调试: 调试信息在开发和调试阶段非常有用,但在生产环境中通常不需要。
  • 信息:提供有关应用程序正常运行方式的详细信息。 通常情况下,程序的正常运行是通过这些日志来监控的。
  • 警告:指出可能的问题或未来可能需要注意的事项。 它适用于可能导致问题但不一定导致程序崩溃的异常或意外情况。
  • 错误:表示需要立即修复的严重问题或错误。 通常用于记录影响应用程序运行的问题。
  • 关键:最严重的状态,用于记录需要立即解决的关键问题,因为这些问题可能会导致严重问题或程序崩溃。

    每个日志级别都有特定的用途,并为开发人员提供了管理日志框架输出数据量的能力。 开发人员可以根据记录数据的严重性和重要性选择适当的消息记录级别。

配置 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")

IronPDF 上的 MSLogging

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属性设置为LoggerImplementation的实例,该实例从loggerFactory获取记录器。 使用此配置,您可以使用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 软件包管理器图形用户界面安装 IronPdf 库。 只需在 "浏览 "选项卡中搜索软件包 "IronPDF",从列表中选择所需的软件包,然后安装最新版本的 IronPDF 即可。

    安装完成后,您就可以开始在项目中使用 IronPDF 库了。

使用 IronPdf 进行 MS 日志记录

截至2022年1月,IronPDF不直接与Microsoft.Extensions.Logging交互,并且不受本地支持。 IronPdf 主要用作在 C# 程序中创建和修改 PDF 的工具。

不过,您仍然可以使用 Microsoft.Extensions.Logging 来记录日志。 通过将日志记录与 IronPDF 一起集成到 C# 程序中,您可以管理和记录与 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 捆绑包。 该捆绑包包括永久许可证、升级选项、一年软件维护和 30 天退款保证。 在带水印的试用期内,您可以探索 IronPDF 的功能。 要了解有关Iron Software提供的软件产品的更多信息,请访问Iron Software的官方网站

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
Cefsharp.WPF.NET Core(它如何为开发人员工作)
下一步 >
Serilog .NET(如何为开发人员工作)