我使用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);
});
}
有副作用吗?
答案 0 :(得分:0)
正确的答案是你应该写一个测试,看看你是否对性能有影响。创建额外的线程可以提供额外的工作。但是,在查看代码和appender代码时,由于GetCollection和CreateExpiryAfterIndex,它可以获得更好的性能。这些现在是同步完成的。我没有看到任何令人讨厌的副作用。