2017-08-29 45 views

回答

1

Serilog.Debugging.SelfLog

可以使用SelfLog屬性告訴serilog在哪裏記錄它自己的錯誤(我們所有人都必須在某個時候調試記錄器)。

示例代碼

因爲我恨沒有提供樣本代碼的答案,其他人可能會發現有用...這裏是我們使用的代碼「初始化」我們的記錄器(包括serilog和seq - 一個偉大的組合用於生成devops團隊可以監控的集中日誌)。

Serilog.Debugging.SelfLog.Enable(Console.Error); 
ILoggerFactory factory = new LoggerFactory(); 
factory.AddConsole(); 
factory.AddDebug(); 
var env = "PROD"; //MyEnvironment: PROD, STAGE, DEV, ETC 

var seqLogger = new LoggerConfiguration() 
    .MinimumLevel.Information() 
    .Enrich.FromLogContext() 
    .Enrich.WithProperty("Environment", env) 
    .WriteTo.Seq(
     "logserveraddress", 
     Serilog.Events.LogEventLevel.Verbose, 
     1000, 
     null, 
     "LogServerApiKey") 
    ); 
    if (env.ToLower() == "prod") { seqLogger.MinimumLevel.Warning(); } 
    factory.AddSerilog(seqLogger.CreateLogger()); 
} 
return factory.CreateLogger("NameThisLogInstaceSomethingUseful"); 
+0

感謝您的解決方案。當數據庫無法存儲時(如果數據庫不可用),如何將日誌存儲在文件中 –

+0

我只是使用文件記錄器。使其條件更加棘手(值得研究或在此提出另一個問題)。 https://nblumhardt.com/2016/10/aspnet-core-file-logger/是一個很好的清晰解釋與sirilog文件記錄 – bri

相關問題