log4mongo将字段添加到mongodb时使用任务

时间:2016-12-08 05:00:03

标签: c# mongodb log4net

我使用log4mongo-net将我的日志记录到mongodb中。我想最大限度地减少数据库写入过程中的时间,因此LOG不会影响我的业务方法执行时间。

可以吗我改变源代码(log4mongo-net / MongoDBAppender.cs),将mongdb filed-add方法放入任务

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);
    });
}

有副作用吗?

1 个答案:

答案 0 :(得分:0)

正确的答案是你应该写一个测试,看看你是否对性能有影响。创建额外的线程可以提供额外的工作。但是,在查看代码和appender代码时,由于GetCollection和CreateExpiryAfterIndex,它可以获得更好的性能。这些现在是同步完成的。我没有看到任何令人讨厌的副作用。