Serilog WriteTo SQL 服务器 - LoggerConfiguration 问题
Serilog WriteTo SQL Server - LoggerConfiguration issue
WriteTo
选项不起作用,无法在数据库中查看日志消息。
试图找出导致此问题的原因。显示推荐搭配 WriteTo
.
此外,AuditTo
与 WriteTo
有什么区别
new LoggerConfiguration().ReadFrom
.Configuration(configObject)
.WriteTo
.Logger(log => log.WriteTo.MSSqlServer(connectionString, "LogMessages", columnOptions: logMessagesColumnOptions)
.Filter
.ByIncludingOnly(t => LogMessagesOptions.Contains(t.Level)))
.Enrich.With(enrichersArray)
.Enrich.FromLogContext()
.CreateLogger();
您可以执行多种操作来帮助您解决消息未写入 Serilog 接收器的原因。您可以在 SO 的另一个答案中看到其中的几个:
回复:WriteTo
与 AuditTo
的区别是 reliability. If you use WriteTo
and an error occurs, your application will continue to run (no exceptions will be thrown from Serilog) and log messages might be lost. If you use AuditTo
and an error occurs, an exception will be thrown and your application will have to handle it. You can read more about Audit Logging here。
我在使用 Serilog 登录数据库方面也有类似的经历。我意识到直到浏览器关闭后才写入日志,即调用 Log.CloseAndFlush() 时。这对我来说是个问题,因为调用日志记录方法后的下一个任务取决于立即写入的日志,因为它从数据库中检索记录的记录。然而,当它试图获取假定记录的记录时,它得到 null
因为日志记录被延迟到程序终止。
我最初使用 WriteTo 并决定改用 AuditTo。这立即解决了问题。 AuditTo 和 WriteTo 之间的主要区别在于 AuditTo 确保在执行下一个任务之前记录事件成功,而 WriteTo 则不然。此外,WriteTo 会静默失败,即如果存在阻止日志记录的问题,下一个任务将执行而不会抛出异常。 AuditTo 不会那样做。如果由于任何原因无法写入日志,则会抛出异常。
AuditTo 最适合您无法承受丢失记录且记录顺序很重要的情况。
WriteTo
选项不起作用,无法在数据库中查看日志消息。
试图找出导致此问题的原因。显示推荐搭配 WriteTo
.
此外,AuditTo
与 WriteTo
new LoggerConfiguration().ReadFrom
.Configuration(configObject)
.WriteTo
.Logger(log => log.WriteTo.MSSqlServer(connectionString, "LogMessages", columnOptions: logMessagesColumnOptions)
.Filter
.ByIncludingOnly(t => LogMessagesOptions.Contains(t.Level)))
.Enrich.With(enrichersArray)
.Enrich.FromLogContext()
.CreateLogger();
您可以执行多种操作来帮助您解决消息未写入 Serilog 接收器的原因。您可以在 SO 的另一个答案中看到其中的几个:
回复:WriteTo
与 AuditTo
的区别是 reliability. If you use WriteTo
and an error occurs, your application will continue to run (no exceptions will be thrown from Serilog) and log messages might be lost. If you use AuditTo
and an error occurs, an exception will be thrown and your application will have to handle it. You can read more about Audit Logging here。
我在使用 Serilog 登录数据库方面也有类似的经历。我意识到直到浏览器关闭后才写入日志,即调用 Log.CloseAndFlush() 时。这对我来说是个问题,因为调用日志记录方法后的下一个任务取决于立即写入的日志,因为它从数据库中检索记录的记录。然而,当它试图获取假定记录的记录时,它得到 null
因为日志记录被延迟到程序终止。
我最初使用 WriteTo 并决定改用 AuditTo。这立即解决了问题。 AuditTo 和 WriteTo 之间的主要区别在于 AuditTo 确保在执行下一个任务之前记录事件成功,而 WriteTo 则不然。此外,WriteTo 会静默失败,即如果存在阻止日志记录的问题,下一个任务将执行而不会抛出异常。 AuditTo 不会那样做。如果由于任何原因无法写入日志,则会抛出异常。
AuditTo 最适合您无法承受丢失记录且记录顺序很重要的情况。