10

我的 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

4

1 回答 1

10

乍一看,您似乎并没有遗漏任何东西。尝试写入表时,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 接收器版本存在问题

于 2016-06-15T23:26:12.097 回答