首页 > 编程语言 >在AspNet Core项目中集成Serilog

在AspNet Core项目中集成Serilog

时间:2023-04-04 18:36:20浏览次数:45  
标签:Core Log Serilog app httpContext options UseSerilogRequestLogging AspNet

1.引入Nuget包 Serilog.AspNetCore

2.配置Serilog

using Serilog;
Log.Logger = new LoggerConfiguration()
    .WriteTo.Console() // 添加console日志输出
    .WriteTo.Debug() // 添加debug日志输出
    .CreateLogger();
try
{
    Log.Information("Starting web application");
    var builder = WebApplication.CreateBuilder(args);
    builder.Host.UseSerilog(); // <-- Add this line
    var app = builder.Build();
    app.MapGet("/", () => "Hello World!");
    app.Run();
}
catch (Exception ex)
{
    Log.Fatal(ex, "Application terminated unexpectedly");
}
finally
{
    Log.CloseAndFlush();
}

builder.Host.UseSerilog(); 通过Serilog管道重定向所有日志时间,删除默认记录器的剩余配置进行清理。

3.使用UseSerilogRequestLogging

app.UseStaticFiles();
// 使用Serilog.AspNetCore封装好的UseSerilogRequestLogging中间件
// 不会记录出现在它之前的组件 比如UseStaticFiles
app.UseSerilogRequestLogging();
// Other app configuration
  • 这种模式的优点是减少了每个 HTTP 请求需要构建、传输和存储的日志事件的数量。在同一事件上拥有多个属性还可以使请求详细信息和其他数据的关联更加容易。

    默认情况下,将添加以下请求信息作为属性:

    • RequestMethod
    • RequestPath
    • StatusCode
    • Elapsed

也可以修改配置模板

app.UseSerilogRequestLogging(options =>
{
    // Customize the message template
    options.MessageTemplate = "Handled {RequestPath}";
    
    // Emit debug-level events instead of the defaults
    options.GetLevel = (httpContext, elapsed, ex) => LogEventLevel.Debug;
    
    // Attach additional properties to the request completion event
    options.EnrichDiagnosticContext = (diagnosticContext, httpContext) =>
    {
        diagnosticContext.Set("RequestHost", httpContext.Request.Host.Value);
        diagnosticContext.Set("RequestScheme", httpContext.Request.Scheme);
    };
});

标签:Core,Log,Serilog,app,httpContext,options,UseSerilogRequestLogging,AspNet
From: https://www.cnblogs.com/toyz9/p/17287335.html

相关文章

  • 最全.NET Core 、.NET 5、.NET 6和.NET 7简介和区别
    .NET是一种用于构建多种应用的免费开源开发平台,可以使用多种语言,编辑器和库开发Web应用、WebAPI和微服务、云中的无服务器函数、云原生应用、移动应用、桌面应用、WindowsWPF、Windows窗体、通用Windows平台(UWP)、游戏、物联网(IoT)、机器学习、控制台应用、Windows服务。框......
  • EF Core从TPH迁移到TPT
    EFCore从TPH迁移到TPT Intro#EFCore支持多种方式处理具有继承关系的表,现在支持TPH、TPC(EFCore7)、TPT,具体的实现方式可以参考官方文档和这篇文章。大致总结一下不同的方式的区别:TPH:所有的类型都放在一张表中,使用discriminator字段用以区别不同的类型TPT:不同的子类型有单......
  • EF Core从TPH迁移到TPT
    IntroEFCore支持多种方式处理具有继承关系的表,现在支持TPH、TPC(EFCore7)、TPT,具体的实现方式可以参考官方文档和这篇文章。大致总结一下不同的方式的区别:TPH:所有的类型都放在一张表中,使用discriminator字段用以区别不同的类型TPT:不同的子类型有单独的表存放子类独有的字段,父......
  • 技嘉 B360 HD3 Core i7-8700 GTX1060黑苹果efi引导文件
    原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔)硬件型号驱动情况主板技嘉B360HD3(B360芯片组)处理器英特尔[email protected]六核已驱动内存32GB(现代DDR42666MHz16GB/金邦DDR43000MHz16GB)已驱动硬盘技嘉GP-GSTFS31120GNTD(120GB/固态硬......
  • .Net Core3.1 API访问进行频次限制
    首先,安装AspNetCore.RateLimitNuGet包。您可以通过NuGet包管理器控制台或VisualStudio的NuGet包管理器来执行此操作。安装后,您将在项目中看到一个名为AspNetCoreRateLimit的文件夹,其中包含中间件的配置类。接下来,您需要在Startup.cs文件中注册中间件。您可以在Configure......
  • ASP.NET Core MVC 请求处理管道原理
     ASP.NETCoreMVC和RazorPages应用的完整请求处理管道   Endpoint包含 MVC和RazorPages ......
  • ASP.NET Core - 缓存之内存缓存(上)
    1.缓存缓存指的是在软件应用运行过程中,将一些数据生成副本直接进行存取,而不是从原始源(数据库,业务逻辑计算等)读取数据,减少生成内容所需的工作,从而显著提高应用的性能和可伸缩性,使用好缓存技术,有利于提高我们提升用户体验性。对于缓存的使用有以下一些注意点:缓存最适用于不常更......
  • .net6(.net core)使用MailKit收取邮件乱码的问题
    配置IMAP地址后,MailKit读取邮件时中文乱码。主要问题是.netcore以后默认缺失中文字符集。1.安装System.Text.Encoding.CodePages包  2.在Main方法注册staticvoidMain(){//注册字符集,缺失字符集,一些中文编码数据为乱码Encoding......
  • 【HMS Core】您的设备未安装最新版本的HMS Core,XXX无法正常运行
    【关键字】未安装HMSCore、XXX无法正常运行、IAP应用内支付 【问题描述】项目中接入了华为应用内支付SDK,在使用时调用了如下接口:Iap.getIapClient(activity).isEnvReady然后弹出了一个对话框,提示:“您的设备未安装最新版本的HMSCore,XXX无法正常运行”,详情跟下图中的弹框是......
  • 使用 MybatisPlusCore 自带的雪花算法生成不重复数字
    这里不介绍雪花算法的实现原理,可以自行搜索查阅网上的资料。这里主要介绍雪花算法的使用场景,如何调用第三方类库MybatisPlusCore自带的方法来使用雪花算法。雪花算法的主要使用场景,就是生成不重复的数字,作为数据库表的主键使用。你可能会使用uuid作为主键,但是其占用16个......