.Net Core中使用DiagnosticSource进行日志记录

这篇具有很好参考价值的文章主要介绍了.Net Core中使用DiagnosticSource进行日志记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

System.Diagnostics.DiagnosticSource 可以丰富地记录程序中地日志,包括不可序列化的类型(例如 HttpResponseMessage 或 HttpContext)。

System.Diagnostics.DiagnosticSource 通过订阅发布模式运行,我们可以根据自己地需要发现数据源并订阅感兴趣的数据源。

 文章来源地址https://www.toymoban.com/news/detail-838971.html

DiagnosticSource 与 ILogger 区别

一般来说,DiagnosticSource主要强类型诊断,它可以记录诸如"Microsoft.AspNetCore.Mvc.ViewNotFound"之类的事件。

而,ILogger用于记录更具体的信息,例如"Executing JsonResult, writing value {Value}。

 

示例

添加必要的依赖项

我们首先将需要的 NuGet 包添加到我们的project中

<PackageReference Include="Microsoft.Extensions.DiagnosticAdapter" Version="3.1.32" />

 

发出Event

首先需要注入DiagnosticSource, 然后通过其write方法发出Event

private readonly ILogger<WeatherForecastController> _logger;
private readonly DiagnosticSource _diagnosticSource;
const string DKEY = "Invoke_WeatherForecast";
public WeatherForecastController(ILogger<WeatherForecastController> logger, DiagnosticSource diagnosticSource)
{
    _logger = logger;
    _diagnosticSource = diagnosticSource;
}

[HttpGet]
public string Get()
{
    if (_diagnosticSource.IsEnabled(DKEY))
    {
        _diagnosticSource.Write(DKEY,
            new
            {
                time = DateTime.Now,
                data = "ttt"
            });
    }
    return "OK";
}

 

定义Listener

有多种方法可以创建使用DiagnosticSource事件的Listener,但最简单的方法之一是使用Microsoft.Extensions.DiagnosticAdapter包提供的功能。

要创建侦听器,您可以创建一个类。然后,您可以使用属性来装饰该方法[DiagnosticName],并提供要侦听的事件名称:

public class DemoDiagnosticListener
{
    const string DKEY = "Invoke_WeatherForecast";
    [DiagnosticName(DKEY)]
    public virtual void CallWeatherForecast (DateTime time, string  data)
    {
        Console.WriteLine($"WeatherForecast called: {time} {data}");
    }
}

 

启动监听

剩下的就是在Program.cs中启动监听

var app = builder.Build();

var diagnosticListener = app.Services.GetRequiredService<DiagnosticListener>();
var listener = new DemoDiagnosticListener();
diagnosticListener.SubscribeWithAdapter(listener);

...

app.Run();

 

效果

.Net Core中使用DiagnosticSource进行日志记录

 

到了这里,关于.Net Core中使用DiagnosticSource进行日志记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ASP.NET Core】使用SignalR推送服务器日志

    一个多月前接手了一个产线机器人项目,上位机以读写寄存器的方式控制机器人,服务器就是用 ASP.NET Core 写的 Web API。由于前一位开发者写的代码质量问题,导致上位机需要16秒才能启动。经过我近一个月的改造,除了保留业务逻辑代码,其他的基本重写。如今上位机的启动

    2024年02月03日
    浏览(41)
  • .net core下优秀的日志框架使用解析,附源代码

    在 .NET Core 中,日志是一个非常重要的组件,它可以帮助我们记录应用程序的运行情况,以便在出现问题时进行排查。在本文中,我们将介绍五个优秀的 .NET Core 日志框架,它们分别是 Serilog、NLog、Log4Net、 Microsoft.Extensions.Logging 和 Loupe。我们将为每个框架提供使用方法及步骤

    2024年02月05日
    浏览(37)
  • C#使用.Net Core进行跨平台开发

    使用 .NET Core 进行跨平台开发是一种灵活的方法,可以在多个操作系统上运行 C# 应用程序。以下是在 C# 中使用 .NET Core 进行跨平台开发的一般步骤: 安装 .NET Core SDK : 在开始之前,需要安装适用于操作系统的 .NET Core SDK。可以从官方网站(https://dotnet.microsoft.com/download)下载

    2024年02月11日
    浏览(34)
  • 【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

    欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平有限

    2024年04月12日
    浏览(35)
  • ASP.NET Core 中使用 WebSocket 协议进行实时通信

    介绍 在 ASP.NET Core 中使用 WebSocket 协议创建实时通信的完整示例涉及几个步骤。在此示例中,我们将创建一个简单的聊天应用程序,用户可以在其中实时发送和接收消息。此示例假设您对 ASP.NET Core 和 C# 有基本了解。 步骤1.创建一个新的ASP.NET Core项目 首先,使用 Visual Studio 或

    2024年01月25日
    浏览(31)
  • 在ASP.NET Core中轻松使用JwtBeare进行身份验证

    JwtBearer简介 首先要搞清楚什么是JwtBearer,JwtBearer是ASP.NET Core的OAuth 2.0 JWT Bearer身份验证提供程序。它提供了对JWT令牌进行验证的功能,然后允许将令牌中包含的声明(claims)用于用户身份验证和授权控制。 Json Web Token (JWT)是一种Web标准,用于在不同系统间传输数据。JWT是一种

    2024年02月04日
    浏览(33)
  • 实战指南:使用 xUnit 和 ASP.NET Core 进行集成测试【完整教程】

    集成测试可在包含应用支持基础结构(如数据库、文件系统和网络)的级别上确保应用组件功能正常。 ASP.NET Core 通过将单元测试框架与测试 Web 主机和内存中测试服务器结合使用来支持集成测试。 集成测试与单元测试相比,能够在更广泛的级别上评估应用的组件,确认多个

    2024年04月22日
    浏览(31)
  • 『gRPC 服务』使用 Postman 对 .NET Core 的 gRPC 服务进行调试测试

    📣读完这篇文章里你能收获到 .NET Core反射gRPC 使用Postman调用gRPC 感谢点赞+收藏,避免下次找不到~ 项目中需 包含 Grpc.AspNetCore.Server.Reflection 包,可在Nuget安装 在 Program.cs 中注册反射: AddGrpcReflection 用于注册启用反射的服务。 MapGrpcReflectionService 用于添加反射服务终结点。 P

    2024年02月15日
    浏览(35)
  • net core内置日志

    引入 Microsoft.Extensions.Logging 命名空间:用于定义和实现日志记录功能 ILogger接口 a. 内置日志系统的主要接口,用于记录日志信息,可以通过一来注入将ILogger实例注入到记录日志的类中,并使用它来记录不同级别的日志消息 ILoggerFactory接口 a. 用于创建ILogger实例工厂接口,可以

    2024年02月16日
    浏览(24)
  • Spring Boot 如何使用 JUL 进行日志记录

    在 Spring Boot 中,我们可以使用多种日志框架进行日志记录。其中,JUL (Java Util Logging) 是 Java 平台自带的日志框架,它提供了简单的 API 和配置,可以轻松地进行日志记录。本文将介绍如何在 Spring Boot 中使用 JUL 进行日志记录,并提供示例代码。 默认情况下,Spring Boot 使用 L

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包