ログ記録
Overview
バージョン2.18 以降、.NET/C# ドライバーは標準の .NET ログ API を使用します。このガイドでは、ドライバーを使用してアプリケーションのログを構成する方法を学習できます。
重要
この機能を使用するには、 Microsoft.Expressions.Loging.Con 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 は、次のカテゴリを使用してメッセージを分類します。
カテゴリ | 説明 |
---|---|
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 |
Tip
Default
カテゴリを構成することで、すべてのログ カテゴリの最小冗長度を指定できます。
ログの冗長度の構成
標準の .NET ログ メカニズムを使用して、各メッセージ カテゴリのログの冗長度を構成できます。 次のコード サンプルは、 MongoClient
を構成して 2 種類のメッセージをログに記録する方法を示しています。
ログ レベルが
Error
以上のすべてのカテゴリのすべてのメッセージSDAM カテゴリからのログ レベルが
Debug
以上のすべてのメッセージ
この例では、構成はメモリ内で行われています。 このコードでは、キーが"LogLevel:<category>"
で、値がそのカテゴリ内のメッセージの最小ログ レベルであるDictionary<string, string>
が作成されます。 次に、コードは辞書を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);
Tip
ログの冗長度の構成の詳細については、 Microsoft .NET のログ記録ドキュメント を参照してください。