没有人知道为什么Serilog(SQL Sink)在发布时会失败,但是可以在开发中使用吗?
在我的.NET 4.7应用程序中,我想包括使用Serilog登录到SQL数据库。过去,只有文件记录功能可以正常工作。
在开发中,我已经开始在我的启动文件中添加以下代码。当我在调试中运行此命令时,一切工作正常,记录已添加到SQL表中。
Serilog版本:Serilog 2.9.0,Serilog.Sinks.MSSqlServer 5.1.3
ColumnOptions option = new ColumnOptions
{
DisableTriggers = true,
AdditionalColumns = new List<SqlColumn>() { new SqlColumn() { ColumnName = "TraceIdentifier", DataType = SqlDbType.VarChar, DataLength = 50 }, new SqlColumn() { ColumnName = "Action", DataType = SqlDbType.VarChar, DataLength = -1 }, new SqlColumn() { ColumnName = "AppName", DataType = SqlDbType.VarChar, DataLength = 50 }, new SqlColumn() { ColumnName = "UserName", DataType = SqlDbType.VarChar, DataLength = -1 } }
};
option.Store.Remove(StandardColumn.MessageTemplate);
option.Store.Remove(StandardColumn.Properties);
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.MSSqlServer(ConfigurationManager.AppSettings["SqlLogging"], "Logs",
autoCreateSqlTable: true, batchPostingLimit: 1000, period: new TimeSpan(0, 0, 0, 0, 15), columnOptions: option)
//.Enrich.WithProperty("AppName", "Catalogs")
.WriteTo.File(@"D:\Apps\LogCatalog.txt")
.CreateLogger();
一旦代码发布并托管在IIS中,它将返回运行时错误。当我删除WriteTo.MSSqlServer时,它运行良好。因此,调试之间没有任何变化,但是一旦在服务器上发布,它就会失败。
似乎服务器上的.NET版本有问题。