日志记录
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 日志记录文档。