可以从 Program.cs 自定义 Serilog 配置吗?
Custom Serilog config possible from Program.cs?
我在启动构造函数期间在 ASP.NET Core 中生成自定义配置,如下所示:
public Startup(IWebHostEnvironment environment, IConfiguration configuration) {
Environment = environment;
// Add extra config - configs added later override ones added earlier when key names clash
Configuration = new ConfigurationBuilder()
.AddConfiguration(configuration)
.AddXmlFile("appsettings.xml")
.Build();
}
我的问题是,虽然这个新的 IConfiguration
可以从 ConfigureServices
和 Configure
访问,但不能从 .UseSerilog()
调用访问 CreateHostBuilder
(Program.cs)。因此,我无法在通话时访问我的 XML 配置:
webBuilder
.UseStartup<Startup>()
.UseSerilog((context, config) => {
config.ReadFrom.Configuration(context.Configuration);
});
我该如何解决这个问题?我可以让 UseSerilog()
lambda 可以使用新配置,还是可以稍后在 ConfigureServices()
?
中配置记录器
好的,我发现我可以在 IWebHostBuilder
链的前面 .UseConfiguration()
(而不是在 Startup
构造函数中)提取我的 XML 配置设置:
webBuilder
.UseConfiguration(new ConfigurationBuilder().AddXmlFile("appsettings.xml").Build())
.UseSerilog((context, config) => {
config.ReadFrom.Configuration(context.Configuration);
})
我在启动构造函数期间在 ASP.NET Core 中生成自定义配置,如下所示:
public Startup(IWebHostEnvironment environment, IConfiguration configuration) {
Environment = environment;
// Add extra config - configs added later override ones added earlier when key names clash
Configuration = new ConfigurationBuilder()
.AddConfiguration(configuration)
.AddXmlFile("appsettings.xml")
.Build();
}
我的问题是,虽然这个新的 IConfiguration
可以从 ConfigureServices
和 Configure
访问,但不能从 .UseSerilog()
调用访问 CreateHostBuilder
(Program.cs)。因此,我无法在通话时访问我的 XML 配置:
webBuilder
.UseStartup<Startup>()
.UseSerilog((context, config) => {
config.ReadFrom.Configuration(context.Configuration);
});
我该如何解决这个问题?我可以让 UseSerilog()
lambda 可以使用新配置,还是可以稍后在 ConfigureServices()
?
好的,我发现我可以在 IWebHostBuilder
链的前面 .UseConfiguration()
(而不是在 Startup
构造函数中)提取我的 XML 配置设置:
webBuilder
.UseConfiguration(new ConfigurationBuilder().AddXmlFile("appsettings.xml").Build())
.UseSerilog((context, config) => {
config.ReadFrom.Configuration(context.Configuration);
})