asp.net-core - Serilog MSSqlServer 接收器不写入表

标签 asp.net-core serilog sink

我的 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's self log 的输出?

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

更新:
看起来您的 SQL Server/本地数据库存在权限问题。此错误消息表明接收器正在尝试运行 ALTER TABLE 语句,并且运行该应用程序的用户没有执行 ALTER TABLE 语句的权限。

更新 2:我建议你使用完整的 .NET + Serilog v1.5.14 + Serilog.Sinks.MSSqlServer v3.0.98 编写一个简单的控制台应用程序,看看你是否得到相同的行为......只是为了排除有一个的可能性.NET Core 实现或您使用的 Beta sink 版本的问题

关于asp.net-core - Serilog MSSqlServer 接收器不写入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847284/

相关文章:

asp.net-core - IdentityServer4 登录接口(interface)

asp.net-core - SystemJS(带有 jspm 的 Aurelia)无法从 jspm_packages 文件夹加载 "aurelia-pal-browser"

c# - 在 ASP.net Core 上使用 hangfire 和 structuremap 有什么更好的方法吗?

c# - Serilog 是否支持 .NET Framework 4.8

winforms - 桌面版 Serilog GUI

java - 如何根据json中的特定键将一个数据流中的接收器添加到不同的路径?

dart - 在 Dart 中使用 Sink 和 Pipe 与 Streams 有什么区别?

docker - 从私有(private) nuget 源恢复 nuget 包 - Docker 给出错误

c# - 如何将 Autofac 与 Serilog 包装类一起使用

azure - 将文件名添加到 Azure 数据工厂中的复制事件