如何在ASPNET Core中使用"IniConfigurationProvider"配置序列号



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

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

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

序列号是在两阶段初始化中创建的。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:myapplog.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:myapplog.txt"
Args:RollOnFileSizeLimit = true
Args:FileSizeLimitBytes = 10000000

我用一个全新的ASP.NET Core应用程序测试了它,它在我的环境中运行。

最新更新