log4net reconnectonerror - 是否需要连接超时?

时间:2014-03-07 20:47:04

标签: log4net-appender

我们有许多.NET应用程序使用log4net登录到sql server databsae。出于各种原因(与log4net无关......我认为)有时候记录停止。应用程序可能会继续工作,但在IIS应用程序池被回收之前,日志记录将不会继续。显而易见的解决方案是将reconnectonerror添加到log4net appender。但是,据我所知,始终建议将“connect timeout = 1”添加到附加的连接字符串中。为什么呢?

我的意思是......

如果log4net日志记录在没有“connect timeout = 1”的情况下工作,为什么会包含make add“connect timeout = 1”?

1 个答案:

答案 0 :(得分:2)

根据文档,重新连接的行为可能会阻止调用线程。

更具体地说,如果连接不可用,一旦有足够的批处理消息,Log4Net将尝试重新连接。如果数据库存在长期问题,则可能导致性能下降 - 尤其是在配置了大量日志记录或小批量大小的情况下。

Apache的一个设计目标是允许日志语句保留在生产代码中,而不会产生高性能成本。这就是连接超时建议的来源。如果你需要支付重新连接的费用,至少要快速完成,这样你就不会受到太大的性能损失。

资料来源: http://logging.apache.org/log4net/release/sdk/log4net.Appender.AdoNetAppender.ReconnectOnError.html

http://mail-archives.apache.org/mod_mbox/logging-log4net-user/200506.mbox/%3CDDEB64C8619AC64DBC074208B046611C7692DA@kronos.neoworks.co.uk%3E