Asp.net-Core

Serilog MSSqlServer 接收器未寫入表

  • October 19, 2019

我的 Startup.cs 中有以下聲明:

Log.Logger = new LoggerConfiguration()
   .MinimumLevel.Debug()
   .WriteTo.ColoredConsole()
   .WriteTo.MSSqlServer("Server=(localdb)\\MSSQLLocalDB;Database=myDb.Logging;Trusted_Connection=True;", "Logs", autoCreateSqlTable: true)
   .WriteTo.RollingFile(pathFormat: Path.Combine(logPath, "Log-{Date}.txt"))
   .CreateLogger();

在我的配置方法中:

loggerFactory.AddSerilog();

當我啟動應用程序時,會創建表,所以我知道連接有效。我將日誌輸出記錄到控制台和文件,但是,沒有輸出到數據庫表。

我沒有做什麼?

其他資訊:使用asp.net core rc2-final,針對net461,使用Serilog.Sinks.MSSqlServer 4.0.0-beta-100

乍一看,您似乎並沒有遺漏任何東西。嘗試寫入表時,SQL Server 接收器可能會引發異常。

您是否嘗試過檢查Serilog 的自我日誌的輸出?

Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));

更新:您的 SQL Server/Local DB 似乎存在權限問題。此錯誤消息表明接收器正在嘗試執行 ALTER TABLE 語句,而執行應用程序的使用者無權執行 ALTER TABLE 語句。

更新 2:我建議你使用完整的 .NET + Serilog v1.5.14 + Serilog.Sinks.MSSqlServer v3.0.98 編寫一個簡單的控制台應用程序,看看你是否得到相同的行為……只是為了排除存在的可能性.NET Core 實現或您正在使用的 beta 接收器版本存在問題

引用自:https://stackoverflow.com/questions/37847284