asp.net核心-从appsettings.json设置Serilog.Exceptions

时间:2018-06-21 09:07:07

标签: exception-handling asp.net-core-2.0 serilog

我需要使用Serilog.Exceptions包来捕获异常。 Serilog从appsettings.json中读取

{
    "Serilog": {
        "Using": [
            "Serilog.Sinks.RollingFile",
            "Serilog.Sinks.Seq"
        ],
        "WriteTo": [
            {
                "Name": "RollingFile",
                "Args": {
                    "restrictedToMinimumLevel": "Debug",
                    "pathFormat": "myPath\\log-{Date}.log"
                }
            },
            {
                "Name": "RollingFile",
                "Args": {
                    "restrictedToMinimumLevel": "Error",
                    "pathFormat": "myPath\\error-{Date}.log"
                }
            },
            {
                "Name": "Seq",
                "Args": {
                    "serverUrl": "myUrl",
                    "apiKey": "myApiKey"
                }
            }
        ],
        "Enrich": [
            "FromLogContext",
            "WithMachineName",
            "WithThreadId"
        ],
        "Properties": {
            "Application": "myApplicationName"
        }
    }
}

在我的 startup.cs

var logger = new LoggerConfiguration()
    .Enrich.WithExceptionDetails()
    .ReadFrom.Configuration(Configuration)
    .CreateLogger();

Log.Logger = logger;

但是它不起作用。我是否需要在appsettings.json中为Serilog.Exceptions包添加其他属性?还是appsettings.json配置正确?我究竟做错了什么? 谢谢

1 个答案:

答案 0 :(得分:1)

以下是我在Serilog中设置ASP.NET Core 2.1的方式。您可以将其作为清单,看看错过了什么。

  1. 从Nuget安装软件包:Serilog.AspNetCoreSerilog.ExceptionsSerilog.Settings.Configuration和您要使用的其他接收器。
  2. 在主程序中设置Serilog

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }
    
        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseSerilog((hostingContext, loggerConfiguration) => 
                    loggerConfiguration
                        .ReadFrom.Configuration(hostingContext.Configuration)
                );
    }
    
  3. WithExceptionDetails放在Serilog的{​​{1}}部分中:

    appsettings.json