log4net:比较adonetappender和rollingfileappender

时间:2010-01-20 16:12:37

标签: log4net appender rollingfileappender adonetappender

我试图看看这些appender中哪一个会表现得更好(时间越短越好)。

RollingFileAppender或ADONetAppender?

选择appender时我应该考虑哪些其他参数?

我看到我的WebServer“持有”滚动文件。我可以设置类似

的内容
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
我的滚动文件appender中的

(参考:log4net documentation中的FileAppender部分),以便多个应用程序/服务器可以写入同一个文件?

我们的数据库服务器位于SAN驱动器中,但日志文件将本地写入硬盘驱动器(或在不久的将来可能是SAN驱动器)

3 个答案:

答案 0 :(得分:3)

如果您的ADONetAppender失去连接,它将停止记录,但使用选项

  <reconnectonerror value="true" />

它会尝试重新连接。

答案 1 :(得分:2)

使用滚动文件appender我们有更好的运气。我们注意到,如果存在网络故障,ADO.NET appender将停止记录。例如,每周安装Service Pack后重新启动会导致您的记录器终止。

请记住,这也意味着如果您使用文件追加器,请将日志保留在同一服务器上 - http://ferventcoder.com/archive/2009/07/16/log4net-note-always-keep-your-logs-on-the-same-server.aspx

我从未见过最小的锁定机制。如果您使用它,看起来确实会支付一些性能损失:http://logging.apache.org/log4net/release/sdk/log4net.Appender.FileAppender.MinimalLock.html

答案 2 :(得分:0)

我通常将RollingFileAppender用于本地磁盘 - 这是强大而快速的(如果你不能写入本地磁盘,通常会有一个致命的问题)。

写入ADO.NET可能会失败 - 例如,如果日志数据库在应用程序运行时脱机以进行备份。

由于性能开销,我也会避免使用MinimalLock,而是为每个应用程序提供单独的日志文件。如果您偶尔需要查看合并日志数据,则可以合并日志的相关部分,或者只是在查看器中并排打开相关部分。