Serilog MSSqlServer接收器不写入表

时间:2016-06-15 23:06:49

标签: 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核心rc2-final,定位net461,并使用Serilog.Sinks.MSSqlServer 4.0.0-beta-100

1 个答案:

答案 0 :(得分:3)

乍一看,你看起来并没有遗漏任何东西。尝试写入表时,SQL Server Sink可能会抛出异常。

您是否尝试过检查Serilog自我日志的输出?

Serilog.Debugging.SelfLog.Out = Console.Out;

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

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