C# MongoClient 分析查询持续时间

C# MongoClient Profiling Query Duration

我喜欢分析我的 MongoDB 命令,如果持续时间超过限制,我喜欢在日志中写入警告。 Profiling/monitoring 与 Java 实现有据可查(参见 here) but for the .net driver I didn't found any doucmentation on https://www.mongodb.com/docs/

我无意中发现了这个 solution here,但是配置文件设置在 MongoDB 级别。我希望它可以在我的 C# 代码中进行配置。

我找到了“隐藏”文档 here

而我应用的解决方案是:

 public MongoClient Create(string connectionString)
{
    var settings = MongoClientSettings.FromConnectionString(connectionString);
    settings.ClusterConfigurator = clusterBuilder =>
    {
        clusterBuilder.Subscribe<CommandSucceededEvent>(x => CheckDuration(x.Duration,x.CommandName));
        clusterBuilder.Subscribe<CommandFailedEvent>(x => CheckDuration(x.Duration, x.CommandName));
    };
    return new MongoClient(settings);
}

private void CheckDuration(TimeSpan duration, string commandName)
{
    if (duration.TotalMilliseconds > 100)
        Log.Warn($"Command {commandName} took longer than 100 ms Duration={duration.TotalMilliseconds}ms");
}