Docs 菜单
Docs 主页
/ / /
C#/.NET
/

日志记录

在此页面上

  • Overview
  • 配置日志记录
  • 按类别记录消息日志
  • 配置日志详细程度

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

重要

要使用此功能,必须添加 Microsoft.Extensions.Logging.Console 包 到您的项目。

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

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

属性
说明
LoggerFactory
The ILoggerFactory object that creates an ILogger. You can create an ILoggerFactory object by using the LoggerFactory.Create() method.

Data Type: ILoggerFactory
Default: null
MaxDocumentSize
Optional. The maximum number of characters for extended JSON documents in logged messages.

For example, when the driver logs the CommandStarted message, it truncates the Command field to the number of characters specified in this parameter.

Data Type: integer
Default: 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
The progress of commands run against your cluster, represented by CommandStartedEvent, CommandSucceededEvent, and CommandFailedEvent
MongoDB.SDAM
Changes in the topology of the cluster, including ClusterAddedServerEvent, ClusterRemovedServerEvent, ServerHeartbeatStartedEvent, ClusterDescriptionChangedEvent, and ServerDescriptionChangedEvent
MongoDB.ServerSelection
The decisions that determine which server to send a particular command to
MongoDB.Connection
Changes in the cluster connection pool, including ConnectionPoolReadyEvent, ConnectionPoolClosedEvent, ConnectionCreatedEvent, and ConnectionCheckoutEvent
MongoDB.Internal.*
Prefix for all other .NET/C# Driver internal components

提示

您可以通过配置 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 日志记录文档。

后退

索引