2016-12-08 1 views
0

私はlog4mongo-netを使用してmongodbに自分のログインを記録します。そして、データベースの書き込み中に時間を最小限に抑えたいので、LOGがビジネスメソッドの実行時間に影響しないようにします。ありlog4mongoがmongodbにフィールドを追加するときにタスクを使用

protected override void Append(LoggingEvent loggingEvent) 
{ 
    var collection = GetCollection(); 
    collection.InsertOneAsync(BuildBsonDocument(loggingEvent)); 
    CreateExpiryAfterIndex(collection); 
} 

protected override void Append(LoggingEvent loggingEvent) 
{ 

    System.Threading.Tasks.Task.Run(() => 
    { 
     var collection = GetCollection(); 
     collection.InsertOneAsync(BuildBsonDocument(loggingEvent)); 
     CreateExpiryAfterIndex(collection); 
    }); 
} 

へ:

は、私は、ソースコード(log4mongoネット/ MongoDBAppender.cs)、 入れmongdb変更OKタスク方法を提出し、追加することです副作用はありますか?

+2

しかし、とにかくasyncを使って作業しているのですが、なぜ別のスレッドに追加したいのですか? – harishr

+0

@entreテストを実行するとmongodbにリモートサーバーのコストがかかりすぎる(約200mm) – wtf512

答えて

0

正解は、パフォーマンスに影響を与えるかどうかをテストする必要があります。余分なスレッドを作成すると、余分な作業が増えます。しかし、コードとアペンダーコードを見ると、GetCollectionとCreateExpiryAfterIndexのためにパフォーマンスが向上する可能性があります。これらは今同期して行われます。私はあなたのコードの結果としてどんな厄介な副作用も見ません。

関連する問題