Log4net RollingFileAppender超时

时间:2010-06-15 15:29:19

标签: c# log4net

我正在使用RollingFileAppender登录到网络共享驱动器。

托管该驱动器的服务器仍然执行基本网络通信但未能提供文件和其他基于文件的任务时出现问题。

当尝试为此远程服务器上的文件获取日志追加程序时,Log4Net刚刚挂起。我可以使用任何类型的超时选项吗?

1 个答案:

答案 0 :(得分:2)

任何FileAppender类型都没有Timeout或类似属性。我查看了source的appender,它没有做任何特别的事情(从文件appender到appender骨架到实际的消息布局类型有一条疯狂的路径,看看所有的流写法)。

我有两条建议......

自定义助手救援!

您可以尝试编写一个自定义appender,其中包含来自网络的各种保护(NetworkFileAppender有一个很好的响铃)。但你必须真正考虑设计。 log4net中的appender应该是同步且快速的。

看一下我用log4net写的关于performance appending的帖子。它充满了警告和缺陷。请特别注意我回来的部分,并说不要写自己的asychronous appender:)

这引导我进行第二次推荐

共享记录“服务”

log4net邮件列表中关于asynchronous file appending的旧帖子以此建议结束

  

我建议使用一个带有单个工作线程的共享缓冲区,一旦达到一定的大小就会记录缓冲区。

此服务应与主应用程序分开(可能只是后台线程)。它应该包括来自网络的所有保护,可能包括另一个本地文件存储(除非您丢失消息)。

.NET 4.0中的BlockingCollectionTask library可以帮助您提升某些内容以降低想法。

结论(和真正的推荐)

我首先质疑你决定附加到网络文件存储。您实际上是在整个应用程序中添加网络呼叫(可能是最长且保证最少的呼叫)。实施任何这些“修复”也可能不值得。 Ask why您需要网络商店中的文件,看看其他解决方案是否能满足您的实际需求。