我添加了用于写入文本文件的 Serilog 和用于写入 SQL Server 数据库表的自定义提供程序。当我添加任何一个时,该代码都有效,但如果同时添加两者,则仅 Serilog 有效。请指教
builder.Services.AddLogging(configure =>
{
configure.AddProvider(new SqlServerLoggerProvider(connectionString.Value, sqlServerMinimumLogLevel)); // Assuming custom provider implemented
});
var logFilePath = Path.Combine(Directory.GetCurrentDirectory(), "logs", "workerService-{Date}.txt");
builder.Services.AddSerilog(loggingBuilder =>
loggingBuilder.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.File(logFilePath, rollingInterval: RollingInterval.Day,
fileSizeLimitBytes: 10 * 1024 * 1024) // Limit each log file to 10 MB
);
您可以使用包
Serilog.Extensions.Logging
然后像下面这样配置,这不会覆盖其他记录器提供程序。
var logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.File(logFilePath, rollingInterval: RollingInterval.Day,fileSizeLimitBytes: 10 * 1024 * 1024)
.CreateLogger();
builder.Services.AddLogging(configure =>
{
configure.AddSerilog(logger);
configure.AddProvider(new SqlServerLoggerProvider(connectionString.Value, sqlServerMinimumLogLevel));
});