1、项目使用dtonet 6 WebApi。
2、Nuget包:
用来访问mysql数据库
Pomelo.EntityFrameworkCore.MySql
Serilog日志
Serilog
配合dotnet
Serilog.AspNetCore
读取环境变量配置
Serilog.Settings.Configuration
Serilog读取MySql
Serilog.Sinks.MySQL
输出到控制台中
Serilog.Sinks.Console
3、配置Serilog
builder.Host.UseSerilog((context, services, loggerConfiguration) => loggerConfiguration .ReadFrom.Configuration(context.Configuration) .Enrich.FromLogContext() );
使用Serilog记录Request
app.UseSerilogRequestLogging();
4、配置appsettings
"Serilog": { "MinimumLevel": { "Default": "Information", "Override": { "Microsoft": "Information", "System": "Information" } }, "WriteTo": [ { "Name": "Console" }, { //MySQL要大写,MySql这样写的话会不认,提示 "Name": "MySQL", "Args": { "connectionString": "Data Source=***;Database=***;AllowLoadLocalInfile=true;User ID=***;Password=***;allowPublicKeyRetrieval=true;pooling=true;CharSet=utf8;port=***;sslmode=none;", "tableName": "Logs", //自动生成表 "autoCreateSqlTable": true } } ], "Enrich": [ "FromLogContext" ], "Properties": { "Application": "Serilog.Test.WebApi", "Environment": "Development" } }
5、项目已经运行过,所以库表是已经存在的,但是第一次运行时,库和表都是不没有的
Serilog不会自动创建数据库,但是会自动创建表,所以一般来说的话,可以将Serilog的表和其他数据库放在一起,这样就避免了需要手动创建数据库的问题。
6、配置好了,运行项目,并查看数据库内容。
这些是在控制台输出的,因为也是配置了控制台的。
这些是写入到数据库中的。
只是因为级别设置成了Information,导致记录的内容有点多,
7、在控制器中配置。
`[Route("api/[controller]")]
[ApiController]
public class SerilogController : ControllerBase
{
private readonly ILogger
public SerilogController(ILogger<SerilogController> logger)
{
_logger = logger;
}
[HttpGet]
public string Get()
{
_logger.LogInformation("Test Test.");
return "begin";
}
}`
结语:Serilog十分好用,跟ILogger结合,并不需要太多的额外代码就能使用。
以上内容仅供参考,如有错误,万望指正。
补充:生产环境根据需求定义自己的记录级别即可。
例如:
Verbose,
Debug,
Information,
Warning,
Error,
Fatal,