C# .NET Core Worker 服务需要根据设置记录到文本文件和数据库表

问题描述 投票:0回答:1

我添加了用于写入文本文件的 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
);
c# asp.net-core .net-core serilog worker-service
1个回答
0
投票

您可以使用包

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));   
});
© www.soinside.com 2019 - 2024. All rights reserved.