当前位置: 首页 > ops >正文

ASP.NET Core 8 轻松配置Serilog日志

与许多其他 .NET 库一样,Serilog 提供了将诊断日志输出到文件、控制台以及其他位置的功能。它易于设置,拥有简洁的 API,并且可以在最新的 .NET 平台之间进行移植。

官方网站:Serilog — simple .NET logging with fully-structured events

1、安装Serilog

dotnet add package Serilog.AspNetCore

2、将Serilog配置信息添加到appsettings.json

在ASP .NET Core后端服务开发中,任何可配置的项我们都应该配置在appsettings.json文件中。

相关配置信息可查看网站:https://github.com/serilog/serilog-settings-configuration

"Serilog": {"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],"MinimumLevel": {"Default": "Information","Override": {"Microsoft": "Warning","System": "Warning"}},"WriteTo": [{"Name": "Console"},{"Name": "File","Args": {"path": "logs\\log.txt","rollingInterval": "Day"}}],"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]}

3、在Program.cs 文件中使用两阶段初始化方式配置Serilog

为了完全捕获程序启动过程中和启动完成后,所有异常日志信息。

第一步:CreateBootstrapLogger()

程序启动时会立即配置一个初始的“引导(bootstrap)”日志记录器,来记录程序启动过程中发生的异常日志。

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("logs\\log.txt", rollingInterval: RollingInterval.Day)
.CreateBootstrapLogger();

第二步:AddSerilog()

当程序加载完成后,使用appsettings.json文件中Serilog配置来替换引导日志记录器。

builder.Services.AddSerilog((services, lc) => 
lc.ReadFrom.Configuration(builder.Configuration));

4、添加Serilog请求日志记录中间件

app.UseSerilogRequestLogging();

5、完整代码

appsetting.json

{"Serilog": {"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],"MinimumLevel": {"Default": "Information","Override": {"Microsoft": "Warning","System": "Warning"}},"WriteTo": [{"Name": "Console"},{"Name": "File","Args": {"path": "logs\\log.txt","rollingInterval": "Day"}}],"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]}
}

Program.cs


using Serilog;
using Serilog.Events;namespace Common.Backend.WebApi
{public class Program{public static void Main(string[] args){Log.Logger = new LoggerConfiguration().MinimumLevel.Override("Microsoft", LogEventLevel.Information).Enrich.FromLogContext().WriteTo.Console().WriteTo.File("logs\\log.txt", rollingInterval: RollingInterval.Day).CreateBootstrapLogger();try{var builder = WebApplication.CreateBuilder(args);builder.Services.AddSerilog((services, lc) => lc.ReadFrom.Configuration(builder.Configuration));var app = builder.Build();app.UseSerilogRequestLogging();app.Run();}catch(Exception ex){Log.Fatal(ex, "Application terminated unexpectedly");}finally{Log.CloseAndFlush();}}}
}

http://www.xdnf.cn/news/15032.html

相关文章:

  • STM32-定时器输入捕获
  • 通用游戏前端架构设计思考
  • 20-C#构造函数--虚方法
  • 小程序软装: 组件库开发
  • 爬虫-正则表达式
  • 汽车功能安全-软件单元验证 (Software Unit Verification)【用例导出方法、输出物】8
  • skywalking-agent-docker镜像
  • C++11 std::move与std::move_backward深度解析
  • 数据分析框架和方法
  • 华为静态路由配置
  • mysql 可用性的保障机制:主讲主从复制机制
  • sqlplus表结构查询
  • CTFHub————Web前置技能[HTTP协议(302跳转、Cookie)]
  • 【数据分析】多数据集网络分析:探索健康与退休研究中的变量关系
  • IntelliJ IDEA 2025.1.3创建不了java8的项目
  • 洛谷 P1104 生日---排序
  • VS2022 C++ EasyX库 扫雷游戏项目开发:打造经典游戏的详细之旅
  • JavaScript基础篇——第五章 对象(最终篇)
  • whitt算法之特征向量的尺度
  • [数学基础] 矩阵的秩及其应用
  • K8S使用命令多集群管理配置
  • Java异步编程全解析:从基础到高阶实战
  • C#基础篇(09)结构体(struct)与类(class)的详细区别
  • 安卓设备信息查看器 - 源码编译
  • PiscTrace深蹲计数功能实现:基于 YOLO-Pose 和人体关键点分析
  • Unity Demo-3DFarm详解-其二
  • 【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框
  • EFK9.0.3 windows搭建
  • 供应链管理:定量分析中的无量纲化处理
  • jenkins+固定agent节点+maven+sonarqube+docker