2
我在.net core 2.0項目中使用serilog作爲日誌框架,我試圖在sql server中存儲日誌,但serilog沒有存儲任何數據數據庫,它甚至不會返回錯誤。當serilog無法在sql服務器中插入數據時沒有收到任何錯誤
任何一個可以幫助如何解決這個問題,是有可能的文件的方式添加到存儲日誌時,數據庫將無法存儲
我在.net core 2.0項目中使用serilog作爲日誌框架,我試圖在sql server中存儲日誌,但serilog沒有存儲任何數據數據庫,它甚至不會返回錯誤。當serilog無法在sql服務器中插入數據時沒有收到任何錯誤
任何一個可以幫助如何解決這個問題,是有可能的文件的方式添加到存儲日誌時,數據庫將無法存儲
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");
感謝您的解決方案。當數據庫無法存儲時(如果數據庫不可用),如何將日誌存儲在文件中 –
我只是使用文件記錄器。使其條件更加棘手(值得研究或在此提出另一個問題)。 https://nblumhardt.com/2016/10/aspnet-core-file-logger/是一個很好的清晰解釋與sirilog文件記錄 – bri