Overview
Starting in version 2.18, the .NET/C# Driver uses the standard .NET logging API. In this guide, you can learn how to use the driver to configure logging for your application.
Important
To use this feature, you must add the Microsoft.Extensions.Logging.Console package to your project.
Configure Logging
To specify the logging settings for your application, create a new instance of the LoggingSettings class, then assign it to the LoggingSettings property of your MongoClientSettings object.
The LoggingSettings constructor accepts the following parameters:
Property | Description |
|---|---|
| The |
| Optional. The maximum number of characters for extended JSON documents in logged
messages. |
The following code sample shows how to create a MongoClient that logs all debug messages to the console:
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);
Log Messages by Category
Each message generated by a MongoDB cluster is assigned a category. This lets you specify different log levels for different types of messages.
MongoDB uses the following categories to classify messages:
Category | Description |
|---|---|
| The progress of commands run against your cluster, represented by
|
| Changes in the topology of the cluster, including
|
| The decisions that determine which server to send a particular command to |
| Changes in the cluster connection pool, including |
| Prefix for all other .NET/C# Driver internal components |
Tip
You can specify the minimum verbosity for all logging categories by configuring the Default category.
Configure Log Verbosity
You can configure the log verbosity of each message category by using the standard .NET logging mechanism. The following code sample shows how to configure a MongoClient to log two types of messages:
All messages with log level
Erroror higher from all categoriesAll messages with log level
Debugor higher from the SDAM category
In this example, the configuration is done in-memory. The code creates a Dictionary<string, string> where the key is "LogLevel:<category>" and the value is the minimum log level of messages in that category. The code then adds the dictionary to a ConfigurationBuilder object, then adds the ConfigurationBuilder to a 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);
Tip
For more information on configuring log verbosity, see the Microsoft .NET logging documentation.