0

github のドキュメントでは、次の接続文字列を使用しています。

.WriteTo.MongoDB("mongo://mymongodb/log")

この例が機能するには、log という名前のコレクションをサーバーに追加する必要があると書かれています。ただし、この接続文字列はサーバー上のログ データベースに接続し、コレクションは指定しません。接続文字列でのコレクションの指定に関する情報が見つかりません (これは理にかなっています)。MongoDB シンクに、どのコレクションに書き込むかをどのように指示すればよいでしょうか?

アプリケーションに SelfLog.Out = Console.Out を追加しましたが、出力ウィンドウに役立つ情報が表示されません。

その後: 「log」という名前のコレクションをデータベースに追加しました。Serilog はそのコレクションに書き込みを行っています。そのため、「ログ」がドライバーに焼き付けられているようです。この特定のデータベースに対して 2 つの異なるログが必要です。だから私の質問は残っています。それを行う方法はありますか?

4

1 に答える 1

0

ソース コードをダウンロードし、コレクション パラメーターを MongoDB LoggerConfiguration クラス コンストラクターのシグネチャに追加します。変更されたコードは ** でマークされています。

public static LoggerConfiguration MongoDB(
    this LoggerSinkConfiguration loggerConfiguration,
    string databaseUrl,
    **string collectionName = null,**
    LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum,
    int batchPostingLimit = MongoDBSink.DefaultBatchPostingLimit,
    TimeSpan? period = null,
    IFormatProvider formatProvider = null)
{
    if (loggerConfiguration == null) throw new ArgumentNullException("loggerConfiguration");
    if (databaseUrl == null) throw new ArgumentNullException("databaseUrl");

    var defaultedPeriod = period ?? MongoDBSink.DefaultPeriod;
    return loggerConfiguration.Sink(
        new MongoDBSink(
            databaseUrl,
            batchPostingLimit,
            defaultedPeriod,
            formatProvider,
            **collectionName ??** MongoDBSink.DefaultCollectionName,
            new CreateCollectionOptions()),
        restrictedToMinimumLevel);
}
于 2015-07-06T14:20:45.213 に答える