使用Xml-configuration使用serilog登录Cosmos DB

问题描述 投票:0回答:1

我试图摆脱静态地将我的代码链接到特定的serilog接收器,并在appsettings中使用xml-configuration。

我以前有这样的代码:

serilogConfig = serilogConfig.WriteTo.AzureDocumentDB(
                    new Uri(logConfig.AzureDocumentDBConfig.Endpoint),
                    logConfig.AzureDocumentDBConfig.AuthKey,
                    logConfig.AzureDocumentDBConfig.Database,
                    logConfig.AzureDocumentDBConfig.Collection);

从appsettings加载的C#代码是这样的:

var log = new LoggerConfiguration()
                .ReadFrom.AppSettings()
                .CreateLogger();

我试图将其更改为例如这个配置数据

<add key="serilog:using:AzureDocumentDB" value="Serilog.Sinks.AzureDocumentDB" />
<add key="serilog:write-to:AzureDocumentDB.endpointUrl" value="https://my_prefix.documents.azure.com:443/" />
<add key="serilog:write-to:AzureDocumentDB.authorizationKey" value="mykey" />
<add key="serilog:write-to:AzureDocumentDB.databaseName" value="mydatabasename" />
<add key="serilog:write-to:AzureDocumentDB.collectionName" value="mycollectionname" />
<add key="serilog:write-to:AzureDocumentDB.timeToLive" value="3600" />

我的问题:没有任何东西写给宇宙。

我错过了一些明显的东西吗?我已经检查了配置值一百万次 - 而且它们是正确的。我还试图为“databaseName”和“collectionName”使用不存在的值,而serilog在DocumentDB中创建这些工件 - 它能够连接到Cosmos。

最后 - 这是我的测试控制台应用程序中的整个代码:

var log = new LoggerConfiguration()
                .ReadFrom.AppSettings()
                .CreateLogger();

log.Information("Test");
log.Error(new ApplicationException("some error"), "stuff failed");
log.Warning("Test2");

Console.WriteLine("Press Enter to exit...");

app config中的日志级别为:

<add key="serilog:minimum-level" value="Verbose" />

谢谢 :-)

更新:

我创建了一个全新的Visual Studio项目,我正在使用流畅的配置API。我的代码是这样的:

var logger = new LoggerConfiguration()
    .WriteTo.ColoredConsole()
    .WriteTo.AzureDocumentDB("https://myendpoint.documents.azure.com:443/", "mykey")
    .CreateLogger();

行为完全一样。没有任何东西写入宇宙。如果我没有指定集合名称和数据库名称,则会在Cosmos中创建“日志”集合和“诊断”数据库 - 但不会写入任何内容。

我开始质疑生活本身及其含义......我在这里想念的是什么?

出于测试目的,我创建了一个新的Cosmos实例并下载了写入数据库的“ToDo”-app。这个工作,如果我更改指向我原来的Cosmos DB的指针,它也可以写入此。我自己的代码无法写入为测试创建的新数据库。

azure-cosmosdb serilog azure-cosmosdb-sqlapi
1个回答
0
投票

好吧,事实证明我确实错过了一些明显的东西。在将数据推送/刷新到Cosmos之前,应用程序线程已结束。

https://github.com/serilog/serilog-sinks-azuredocumentdb/issues/82

© www.soinside.com 2019 - 2024. All rights reserved.