我在Azure中使用DocumentDB设置了一个包含集合的数据库。我可以连接,查询,更新整个CRUD与数据库的事情。现在我添加了seriLog,这样我就可以将错误记录到我的新数据库中。 SeriLog有一个Azure DocumentDb的接收器。您可以通过NuGet安装它:
Install-Package Serilog.Sinks.AzureDocumentDb
执行此操作后,我执行以下操作作为测试,通过seriLog:
向我的数据库写入内容 Uri uri = new Uri(ConfigurationManager.AppSettings["endpoint"]);
DateTimeOffset timestamp = new DateTimeOffset(DateTime.Now);
Exception exception = new Exception("This is just a test");
IEnumerable<MessageTemplateToken> tokens = new List<MessageTemplateToken>();
MessageTemplate messageTemplate = new MessageTemplate(tokens);
IEnumerable<LogEventProperty> properties = new List<LogEventProperty>();
LogEvent logEvent = new LogEvent(timestamp, LogEventLevel.Information,exception,messageTemplate,properties);
var azure = new AzureDocumentDBSink(uri, ConfigurationManager.AppSettings["authKey"], ConfigurationManager.AppSettings["database"], "Items",null);
azure.Emit(logEvent);
当我尝试编译这个项目时,我得到以下内容:
Error CS1705 Assembly 'Serilog.Sinks.AzureDocumentDB' with identity
'Serilog.Sinks.AzureDocumentDB, Version=1.5.0.0,
Culture=neutral, PublicKeyToken=24c2f752a8e58a10' uses 'Serilog,
Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10'
which has a higher version than referenced assembly
'Serilog' with identity 'Serilog, Version=1.4.0.0, Culture=neutral,
PublicKeyToken=24c2f752a8e58a10'
我查看了app.config并看到了以下内容:
<dependentAssembly>
<assemblyIdentity name="Serilog" publicKeyToken="24c2f752a8e58a10" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.4.0.0" newVersion="1.4.0.0" />
</dependentAssembly>
通常情况下,如果发生这种情况,我只需更新参考资料,我就可以了。但事实并非如此。我从VS2015中的空白控制台应用程序开始,安装了NuGet包,添加了代码并尝试运行它。有谁知道为什么会这样,以及如何解决它?感谢
答案 0 :(得分:1)
这是包的NuSpec的一个问题;它已在 Serilog.Sinks.DocumentDB 1.5.8版中修复,现已发布。
Update-Package Serilog
Update-Package Serilog.Sinks.AzureDocumentDB
在程序包管理器控制台中(VS)将对其进行排序。
答案 1 :(得分:0)
您是否尝试删除Serilog以及Serilog.Sinks.AzureDocumentDb软件包,然后再添加Serilog.Sinks.AzureDocumentDb?