Logging 从配置读取日志
我正在尝试使用Logging 从配置读取日志,logging,asp.net-core,.net-core,serilog,Logging,Asp.net Core,.net Core,Serilog,我正在尝试使用Serilog.Settings.configurationprerelease NuGet包从appsettings.json加载Serilog配置。但是,当我使用Configuration.GetSection加载它时,该值继续返回为null 以下是我的Program.cs文件中的内容: 返回WebHost.CreateDefaultBuilder(args) .UseStartup() .配置日志记录( (hostingContext、loggingBuilder)=> {
Serilog.Settings.configuration
prerelease NuGet包从appsettings.json加载Serilog配置。但是,当我使用Configuration.GetSection加载它时,该值继续返回为null
以下是我的Program.cs文件中的内容:
返回WebHost.CreateDefaultBuilder(args)
.UseStartup()
.配置日志记录(
(hostingContext、loggingBuilder)=>
{
loggingBuilder.ClearProviders();
loggingBuilder.AddSerilog(
新LoggerConfiguration()
.ReadFrom.ConfigurationSection(hostingContext.Configuration.GetSection(“Serilog”))
.CreateLogger()
);
}
);
以下是我的appsettings.json文件中的内容:
{
“Serilog”:{
“使用”:[“Serilog.Sinks.MSSqlServer”],
“最低级别”:{
“默认值”:“详细”,
“覆盖”:{
“Microsoft”:“详细”,
“系统”:“详细”,
Microsoft.AspNetCore.Authentication:“详细”
}
},
“书面形式”:[
{
“名称”:“MSSqlServer”,
“Args”:{
“连接字符串”:“*我的连接字符串*”,
“表名”:“错误日志”
}
}
]
}}
NuGet软件包已安装:
- Microsoft.AspNetCore.App v2.1.1
- Serilog v2.7.1
- Serilog.AspNetCore v2.1.1
- Serilog.Extensions.Logging v2.0.2
- Serilog.Settings.Configuration v3.0.0-dev-00119
- Serilog.Sinks.MSSqlServer v5.1.2
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration))
.Build();
返回WebHost.CreateDefaultBuilder(args)
.UseStartup()
.useserlog((hostingContext,loggerConfiguration)=>loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration))
.Build();
默认情况下,Serilog
在配置中查找Serilog
部分我是这样配置的
public static void Main(string[] args)
{
var _config = new ConfigurationBuilder()
.AddJsonFile("loggerconfig.json")//mantained separate
config file.
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(_config)
.CreateLogger();
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSerilog()
.UseStartup<Startup>();
publicstaticvoidmain(字符串[]args)
{
var\u config=new ConfigurationBuilder()
.AddJsonFile(“loggerconfig.json”)//
配置文件。
.Build();
Logger.Logger=新的LoggerConfiguration()
.ReadFrom.Configuration(_config)
.CreateLogger();
CreateWebHostBuilder(args.Build().Run();
}
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.useserlog()
.UseStartup();
根据Serilog,这是更好的方法。下面是我如何读取logging.json的:
var builder = new ConfigurationBuilder()
.AddJsonFile(path: "logging.json", optional: false, reloadOnChange: true);
var config = builder.Build();
Log.Logger = new LoggerConfiguration()
.Enrich.With(new EventBusLogEnricher())
.ReadFrom.Configuration(config)
.CreateLogger();
请注意,这样您将无法记录启动时发生的任何异常。细节: