使用 SeriLog 写入 Azure documentDb
Write to Azure documentDb with SeriLog
我已经使用 DocumentDB 在 Azure 中设置了一个包含集合的数据库。我可以连接、查询、更新数据库,完成整个 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 包,添加了代码并尝试 运行 它。有谁知道为什么会这样以及如何解决?谢谢
您是否尝试过删除 Serilog 和 Serilog.Sinks.AzureDocumentDb 包,然后再添加回来 Serilog.Sinks.AzureDocumentDb?
这是包的 NuSpec 的问题;它在 Serilog.Sinks.DocumentDB 版本 1.5.8 中已修复,现已发布。
Update-Package Serilog
Update-Package Serilog.Sinks.AzureDocumentDB
在Package Manager Console(VS)中会整理出来。
我已经使用 DocumentDB 在 Azure 中设置了一个包含集合的数据库。我可以连接、查询、更新数据库,完成整个 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 包,添加了代码并尝试 运行 它。有谁知道为什么会这样以及如何解决?谢谢
您是否尝试过删除 Serilog 和 Serilog.Sinks.AzureDocumentDb 包,然后再添加回来 Serilog.Sinks.AzureDocumentDb?
这是包的 NuSpec 的问题;它在 Serilog.Sinks.DocumentDB 版本 1.5.8 中已修复,现已发布。
Update-Package Serilog
Update-Package Serilog.Sinks.AzureDocumentDB
在Package Manager Console(VS)中会整理出来。