对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

日志记录

从版本 2.18 开始, .NET/ C#驱动程序使用标准.NET日志记录API。在本指南中,您可以学习如何使用驱动程序为应用程序配置日志记录。

重要

若要使用此功能,必须将Microsoft包添加到项目中。

要指定应用程序的日志记录设置,请创建 LoggingSettings 类的新实例,然后将其赋给 MongoClientSettings 对象的 LoggingSettings 属性。

LoggingSettings 构造函数接受以下参数:

属性
说明

LoggerFactory

创建 ILoggerILoggerFactory 对象。您可以使用 LoggerFactory.Create() 方法创建 ILoggerFactory 对象。

数据类型ILoggerFactory
默认null

MaxDocumentSize

可选.日志记录的消息中扩展 JSON 文档的最大字符数。

例如,示例,当驱动程序日志 CommandStarted 消息时,它会将 Command 字段截断为此参数中指定的字符数。

数据类型integer
默认1000

以下示例代码展示了如何创建 MongoClient,将所有调试消息记录到控制台:

using var loggerFactory = LoggerFactory.Create(b =>
{
b.AddSimpleConsole();
b.SetMinimumLevel(LogLevel.Debug);
});
var settings = MongoClientSettings.FromConnectionString("<connection string>");
settings.LoggingSettings = new LoggingSettings(loggerFactory);
var client = new MongoClient(settings);

系统为 MongoDB 集群生成的每条消息分配了一个类别。这样,您就可以为不同类型的消息指定不同的日志级别。

MongoDB 使用以下类别对消息进行分类:

category
说明

MongoDB.Command

对集群运行命令的进度,用 CommandStartedEventCommandSucceededEventCommandFailedEvent 表示

MongoDB.SDAM

集群拓扑结构变更,包括 ClusterAddedServerEventClusterRemovedServerEventServerHeartbeatStartedEventClusterDescriptionChangedEventServerDescriptionChangedEvent

MongoDB.ServerSelection

决定向哪个服务器发送特定命令的决策

MongoDB.Connection

集群连接池中的变更,包括 ConnectionPoolReadyEventConnectionPoolClosedEventConnectionCreatedEventConnectionCheckoutEvent

MongoDB.Internal.*

所有其他 .NET/C# 驱动程序内部组件的前缀

提示

您可以通过配置 Default 类别,为所有日志类别指定最低冗余度。

您可以通过标准 .NET 日志机制配置各消息类别的日志冗余度。以下代码示例展示了如何配置 MongoClient 来记录两种类型的消息:

  • 所有类别中日志级别为 Error(错误)或更高的全部消息

  • SDAM 类别中所有日志级别为 Debug 或更高的消息

在本例中,配置是在内存中完成的。这段代码会创建一个 Dictionary<string, string>(字典),其中键为 "LogLevel:<category>",值为该类别中消息的最低日志级别。然后,代码将字典添加到 ConfigurationBuilder 对象中,再将 ConfigurationBuilder 添加到 LoggerFactory 中。

var categoriesConfiguration = new Dictionary<string, string>
{
{ "LogLevel:Default", "Error" },
{ "LogLevel:MongoDB.SDAM", "Debug" }
};
var config = new ConfigurationBuilder()
.AddInMemoryCollection(categoriesConfiguration)
.Build();
using var loggerFactory = LoggerFactory.Create(b =>
{
b.AddConfiguration(config);
b.AddSimpleConsole();
});
var settings = MongoClientSettings.FromConnectionString("<connection string>");
settings.LoggingSettings = new LoggingSettings(loggerFactory);
var client = new MongoClient(settings);

提示

有关配置日志详细程度的更多信息,请参阅Microsoft .NET日志记录文档。