Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 从配置读取日志_Logging_Asp.net Core_.net Core_Serilog - Fatal编程技术网

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();

请注意,这样您将无法记录启动时发生的任何异常。细节: