asp.net-core - 如何在 ASPNET Core 中使用“IniConfigurationProvider”配置 Serilog
问题描述
我正在尝试使以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 应用程序对其进行了测试,它可以在我的环境中运行。
推荐阅读
- python - OKTA AWS CLI 使用 Python 连接到 Athena
- html - “加载资源失败:服务器响应状态为 500”只是有时
- r - 使用带有嵌套 df 的 map_dbl 不能正确访问数据框?
- python - 在 FOLIUM python 中处理缺失的几何图形
- java - google.mlkit 代码从不执行 .addOnSuccessListener() 和 .addOnFailureListener()
- moodle - 自定义占位符的模板 js 程序 - MOODLE
- node.js - 调用航班日期 API 时出现 NotFound 错误
- haskell - 如何使用 haskell 和 stack 在 gitpod 上预构建
- flutter - 获取在堆栈颤动中动态添加小部件时点击哪个小部件
- r - 如何按字母顺序对数据框的 x 轴标签进行排序?