.net - Cosmos SDK v3 不记录文档创建

标签 .net azure azure-cosmosdb

我有一个 .NET 6 应用程序,它使用 v3 Cosmos SDK 将数据写入容器。

当我将应用程序范围的默认日志记录级别设置为信息时,我看到来自 Comsos SDK 的 GET 请求,如下所示:

[09:41:17 INF] Start processing HTTP request GET https://127.0.0.1:8081/dbs/requeststore/colls/orchestrationrequest
[09:41:17 INF] Sending HTTP request GET https://127.0.0.1:8081/dbs/requeststore/colls/orchestrationrequest
[09:41:17 INF] Received HTTP response headers after 33.8561ms - 200
[09:41:17 INF] End processing HTTP request after 44.5824ms - 200

尽管我可以看到我的数据已成功保留,但我没有看到任何有关文档创建的日志记录。

编辑:这可能与 Cosmos 使用的 RNTBD 协议(protocol)有关吗?那么 GET 请求获取将数据发送到容器所需的信息,然后建立 RTNBD 连接吗?如果能够进行一些日志记录就好了。

编辑2:我能够使用以下代码让跟踪监听器将数据写入控制台:

Type defaultTrace = Type.GetType("Microsoft.Azure.Cosmos.Core.Trace.DefaultTrace,Microsoft.Azure.Cosmos.Direct");
TraceSource traceSource = (TraceSource)defaultTrace.GetProperty("TraceSource").GetValue(null);
var consoleTrance = new ConsoleTraceListener();
traceSource.Listeners.Add(consoleTrance);

最佳答案

如果您用来记录的内容自动检测并记录 HTTP 请求(例如 Application Insights),那么是的,不记录数据平面操作(例如创建项目)是有意义的。

有2种连接方式,V3 SDK默认为Direct:https://docs.microsoft.com/azure/cosmos-db/sql-sdk-connection-modes

在直接模式下,预计会看到一些 HTTP 交互(用于路由 https://learn.microsoft.com/azure/cosmos-db/nosql/sdk-connection-modes#routing )。

SDK 公开了每个操作的诊断信息,其中包括完整延迟/时间等信息,对于故障排除非常有用:https://learn.microsoft.com/azure/cosmos-db/nosql/troubleshoot-dotnet-sdk#capture-diagnostics

SDK还公开了Trace,因此您可以定义Trace Listener,但这将包含大量事件信息(不仅仅是建立连接和发送请​​求)。

关于.net - Cosmos SDK v3 不记录文档创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74136908/

相关文章:

azure-cosmosdb - ReadItemAsync 与 GetItemLinqQueryable?

c# - 如何检查 LinqToSql DataContext 运行了多少查询?

c# - 如何在运行时克隆 Control 事件处理程序?

.net - 用户根据给定 System.Windows.Forms.KeyEventArgs 中的值键入了哪些可打印字符(如果有)?

azure - 使用 ARM 模板启用 Azure StorageV2 静态网站(预览)功能

azure-cosmosdb - 同一查询的 Cosmos DB 图 RU 成本不一致

mongodb spring 连接一夜之间丢失

c# - 是否可以在 .NET Core 平台上运行 ASP .NET MVC 5?

c# - 获取 Azure 服务总线中的消息统计信息

azure - 无法从 Azure 应用程序注册中删除 URL