Azure cosmosdb CosmosDB是否有记录CRUD请求的固有方法?
我试图找出CosmosDB是否有任何内置功能可以用作审核日志,即现有Azure诊断/监视功能之一会注销对数据库的特定更改,包括写入的JSON数据 这是存在的,还是我必须自己写 到目前为止,我发现的最接近的是诊断日志记录,它包含大量信息,但不包括实际写入、更改或删除的内容。根据您提到的azure cosmos db中的官方记录,Azure cosmosdb CosmosDB是否有记录CRUD请求的固有方法?,azure-cosmosdb,audit-trail,Azure Cosmosdb,Audit Trail,我试图找出CosmosDB是否有任何内置功能可以用作审核日志,即现有Azure诊断/监视功能之一会注销对数据库的特定更改,包括写入的JSON数据 这是存在的,还是我必须自己写 到目前为止,我发现的最接近的是诊断日志记录,它包含大量信息,但不包括实际写入、更改或删除的内容。根据您提到的azure cosmos db中的官方记录,诊断日志可以记录数据平面请求,MongoRequests,度量请求。但是,没有此类信息表明数据库、集合、文档等的具体更改 因此,我建议您深入挖掘azure cosmos数据
诊断日志可以记录数据平面请求
,MongoRequests
,度量请求
。但是,没有此类信息表明数据库、集合、文档等的具体更改
因此,我建议您深入挖掘azure cosmos数据库中的内容。它内置于azure cosmos数据库中,使我们能够捕获对集合所做的所有更改,而不必考虑系统所做的更改。您可以通过三种不同的方式阅读更改提要:
1.使用Azure功能
请在Azure Functions应用程序中创建Azure Cosmos DB触发器,您选择要连接的Azure Cosmos DB集合,并且每当对集合进行更改时都会触发该函数
2.使用Azure Cosmos DB SDK
foreach(PartitionKeyRange中的PartitionKeyRange pkRange){
字符串继续=空;
checkpoints.TryGetValue(pkRange.Id,out continuation);
IDocumentQuery=client.CreateDocumentChangeFeedQuery(
collectionUri,
新的ChangeFeedOptions
{
PartitionKeyRangeId=pkRange.Id,
startFromStart=真,
请求继续=继续,
MaxItemCount=-1,
//设置读取时间:仅显示自StartTime以来修改的更改提要结果
StartTime=DateTime.Now-TimeSpan.FromSeconds(30)
});
while(query.HasMoreResults)
{
FeedResponse readChangesResponse=query.ExecuteNextAsync().Result;
foreach(读取更改响应中的动态更改文档)
{
WriteLine(“文档:{0}”,changedDocument);
}
检查点[pkRange.Id]=readChangesResponse.ResponseContinuation;
}
}
3.
希望它能对您有所帮助。但请小心,因为更改源无法处理删除请求“您可以从容器的原始位置读取更改源,但如果某个项目被删除,它将从更改源中删除。”
foreach (PartitionKeyRange pkRange in partitionKeyRanges){
string continuation = null;
checkpoints.TryGetValue(pkRange.Id, out continuation);
IDocumentQuery<Document> query = client.CreateDocumentChangeFeedQuery(
collectionUri,
new ChangeFeedOptions
{
PartitionKeyRangeId = pkRange.Id,
StartFromBeginning = true,
RequestContinuation = continuation,
MaxItemCount = -1,
// Set reading time: only show change feed results modified since StartTime
StartTime = DateTime.Now - TimeSpan.FromSeconds(30)
});
while (query.HasMoreResults)
{
FeedResponse<dynamic> readChangesResponse = query.ExecuteNextAsync<dynamic>().Result;
foreach (dynamic changedDocument in readChangesResponse)
{
Console.WriteLine("document: {0}", changedDocument);
}
checkpoints[pkRange.Id] = readChangesResponse.ResponseContinuation;
}
}