使用SeriLog写入Azure documentDb

时间:2016-04-08 19:35:34

标签: c# azure azure-cosmosdb serilog

我在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包,添加了代码并尝试运行它。有谁知道为什么会这样,以及如何解决它?感谢

2 个答案:

答案 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?