.NET Core 8 C# Serilog 记录器中的工作服务:使用 AppSettings 中的设置写入文件

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

我想添加 Serilog 进行日志记录,并将日志写入

appsettings.json
配置文件中定义的基于文本文件的设置。

自从使用 .NET Core 8 以来,我发现了挑战

var builder = Host.CreateApplicationBuilder(args);

我得到最多使用的样本

var builder = Host.CreateDefaultBuilder(args);

我想在

appsettings.json
中定义完整的设置,工作人员服务必须从中读取并采取相应的行为。

{
  "Serilog": {
    "WriteTo": [
      { "Name": "File", "Args": { "path": "log.txt", "rollingInterval": "Day" } }
    ]
  }
}

请帮我提供注册代码的

appsettings.json
program.cs
的配置。

找到解决方案

builder.Services.AddSerilog(loggingBuilder => loggingBuilder
        .WriteTo.File(logFilePath, rollingInterval: RollingInterval.Day,
            fileSizeLimitBytes: 10 * 1024 * 1024) // Limit each log file to 10 MB
);

这里我只想记录信息、警告。我尝试了“Where”,但它说该方法不可用,尽管我有 serilog 3.0

此外,我还添加了自定义记录器来通过 proc 记录 SQL Server 数据库表的错误和关键信息。我做了这个改变,但两者都不起作用。当两者都启用时,它会写入文件。如果我评论 serilog 它会写入 sql server 表。请指教

builder.Services.AddSerilog(loggingBuilder =>loggingBuilder

    .WriteTo.File(logFilePath, rollingInterval: RollingInterval.Day,
        fileSizeLimitBytes: 10 * 1024 * 1024) // Limit each log file to 10 MB

);

var connectionString = Configuration.GetSection("ConnectionStrings");
var sqlServerMinimumLogLevel = Configuration.GetValue<LogLevel>("Logging:SqlServerMinimumLevel", LogLevel.Error); // Default to Error

builder.Services.AddLogging(configure =>
{
    configure.AddProvider(new SqlServerLoggerProvider(connectionString.Value, sqlServerMinimumLogLevel) ); // Assuming custom provider implemented
}); 
c# .net-core serilog serilog-sinks-file worker-service
1个回答
0
投票

分配

var logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Configuration)
.Enrich.FromLogContext()
.CreateLogger();
Log.Logger = logger;

这里Log.Logger是全局共享的记录器。

© www.soinside.com 2019 - 2024. All rights reserved.