gpt4 book ai didi

asp.net-core - 如何在 ASPNET Core 中使用 `IniConfigurationProvider` 配置 Serilog

转载 作者:行者123 更新时间:2023-12-05 04:45:56 26 4
gpt4 key购买 nike

我正在尝试将以 appSettings.json 格式提供的 Serilog 配置示例应用到我的 ASPNET Core Web 应用程序中,该应用程序必须使用 .ini 文件进行配置(使用Microsoft.Extensions.Configuration.Ini.IniConfigurationProvider`)

我想在输出控制台中查看日志并使用配置文件添加额外的接收器。

我的问题是我不明白如何将嵌套的 JSON 语法转换为 INI 文件的平面格式。

Serilog 是在两阶段初始化中创建的。在 Program.cs 中启动如下:

    Log.Logger = new LoggerConfiguration()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateBootstrapLogger();

然后在 CreateHostBuilder 函数中我将其替换为实际配置

    Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, configuration) => {
configuration.Sources.Clear();
configuration.AddIniFile(@"config.ini", optional: false, reloadOnChange: false);
})
.UseSerilog((context, services, configuration) => configuration
.ReadFrom.Configuration(context.Configuration)
.ReadFrom.Services(services)
.Enrich.FromLogContext()
.WriteTo.Console())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})

这就是我现在正在尝试的(没有成功)

    [Serilog]
Level=Verbose

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

[Serilog:Write-To]
File.Path = "C:\myapp\log.txt"
File.rollOnFileSizeLimit = true
File.fileSizeLimitBytes = 10000000

最佳答案

您的 .ini 文件语法不正确。试试这个:

[Serilog]
Level=Verbose

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

[Serilog:WriteTo:File]
Name = "File"
Args:Path = "C:\myapp\log.txt"
Args:RollOnFileSizeLimit = true
Args:FileSizeLimitBytes = 10000000

我已经使用全新的 ASP NET Core 应用对其进行了测试,它可以在我的环境中运行。

关于asp.net-core - 如何在 ASPNET Core 中使用 `IniConfigurationProvider` 配置 Serilog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69015677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com