Asp.Net Core 8.0 使用 Serilog 按日志级别写入日志文件的两种方式

1、所需的Nuget包

本文项目的版本是.NET 8.0,如果使用其它版本安装适配版本即可。

Serilog.AspNetCore(8.0.2)

Serilog.Sinks.File(5.0.0)

Serilog.Expressions(5.0.0)

2、两种配置方式

2.1 代码形式(Program.cs)

在Program.cs文件中,添加如下代码

//设置Serilog为日志管理

builder.Host.UseSerilog((context, loggerConfiguration) =>

{

loggerConfiguration.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)//最小日志级别

.Enrich.FromLogContext()

.WriteTo.Console()//输出到控制台

//按日志级别分别写入不同的日志文件中(可设置参数outputTemplate模板,有默认这里就不设置了)

.WriteTo.Logger(configure => configure

.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information)//过滤

.WriteTo.File("Logs/Info/info.txt", rollingInterval: RollingInterval.Day))

.WriteTo.Logger(configure => configure

.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning)//过滤

.WriteTo.File("Logs/Warn/warn.txt", rollingInterval: RollingInterval.Day))

.WriteTo.Logger(configure => configure

.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)//过滤

.WriteTo.File("Logs/Error/error.txt", rollingInterval: RollingInterval.Day));

});

2.2 配置文件形式(appsetting.json)

2.2.1、appsetting.json文件添加如下配置信息

"Serilog": {

"Using": [ "Serilog.Sinks.File" ],

"MinimumLevel": {

"Default": "Information",//默认日志输出级别

"Override": {

"Microsoft": "Warning",

"System": "Warning"

}

},

"WriteTo": [

{ "Name": "Console" },//输出到控制台

{//info

"Name": "Logger",

"Args": {

"configureLogger": {

"Filter": [//过滤

{

"Name": "ByIncludingOnly",

"Args": {

"expression": "@l = 'Information'"

}

}

],

"WriteTo": [//写入

{

"Name": "File",

"Args": {

"path": "Logs/Info/info.txt",

"rollingInterval": "Day",

"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {SourceContext}: {Message}{NewLine}{Exception}{NewLine}"

}

}

]

}

}

},

{//warning

"Name": "Logger",

"Args": {

"configureLogger": {

"Filter": [

{

"Name": "ByIncludingOnly",

"Args": {

"expression": "@l = 'Warning'"

}

}

],

"WriteTo": [

{

"Name": "File",

"Args": {

"path": "Logs/Warn/warn.txt",

"rollingInterval": "Day",

"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {SourceContext}: {Message}{NewLine}{Exception}{NewLine}"

}

}

]

}

}

},

{//error

"Name": "Logger",

"Args": {

"configureLogger": {

"Filter": [

{

"Name": "ByIncludingOnly",

"Args": {

"expression": "@l = 'Error'"

}

}

],

"WriteTo": [

{

"Name": "File",

"Args": {

"path": "Logs/Error/error.txt",

"rollingInterval": "Day",

"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {SourceContext}: {Message}{NewLine}{Exception}{NewLine}"

}

}

]

}

}

}

],

"Enrich": [ "FromLogContext", "WithThreadId" ]

}

2.2.2、在Program.cs文件中添加如下代码进行Serilog的注册使用

//设置Serilog为日志管理

builder.Host.UseSerilog((context, loggerConfiguration) =>

{

//读取配置文件中Serilog配置信息

loggerConfiguration.ReadFrom.Configuration(context.Configuration);

});

3、实现效果如下

Logs/Info/info.txt 指定的日志文件路径是位于项目根路径下

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

相关推荐
csdn_aspnet5 天前
.Net 6.0 .Net7.0 .Net8.0 .Net9.0 使用 Serilog 按日志等级写入日志及 appsetting.json 配置方式实现
.net6.0·serilog·.net9.0
csdn_aspnet1 个月前
使用 .NET 6 或 .NET 8 上传大文件
.net6.0·.net8.0
csdn_aspnet3 个月前
.NET 8 中 Entity Framework Core 的使用
efcore·ef·.net8.0
csdn_aspnet3 个月前
.NET 8 Web API 中的身份验证和授权
webapi·.net8.0
csdn_aspnet3 个月前
在 .NET 8 Web API 中实现 Entity Framework 的 Code First 方法
webapi·.net8.0
csdn_aspnet3 个月前
.NET 8 中的 Mini WebApi
webapi·.net8.0
csdn_aspnet3 个月前
使用 ASP.NET Core 8.0 创建最小 API
webapi·.net8.0
csdn_aspnet3 个月前
ASP.NET Core 8.0 中使用 Hangfire 调度 API
1024程序员节·hangfire·.net8.0
csdn_aspnet3 个月前
了解 .NET 8 中的定时任务或后台服务:IHostedService 和 BackgroundService
.net8.0·ihostedservice