C# Log4net RollingFileAppender超时

C# Log4net RollingFileAppender超时,c#,log4net,C#,Log4net,我正在使用RollingFileAppender登录到网络共享驱动器 出现了一个问题,托管该驱动器的服务器仍然执行基本的网络通信,但无法提供文件和其他基于文件的任务 Log4Net在尝试获取此远程服务器上文件的日志追加器时挂起。我可以使用任何类型的超时选项吗?在任何类型上都没有超时或类似属性。我查看了appender的页面,它没有做任何特殊的事情(从文件appender到appender框架,到实际的消息布局类型,有一个疯狂的路径,可以看到所有的流写入) 我有两个建议 海关救援人员! 您可以尝试

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

出现了一个问题,托管该驱动器的服务器仍然执行基本的网络通信,但无法提供文件和其他基于文件的任务


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

在任何类型上都没有
超时
或类似属性。我查看了appender的页面,它没有做任何特殊的事情(从文件appender到appender框架,到实际的消息布局类型,有一个疯狂的路径,可以看到所有的流写入)

我有两个建议

海关救援人员! 您可以尝试编写一个自定义appender,其中包含来自网络的各种保护(
NetworkFileAppender
有一个漂亮的环)。但你必须真正考虑设计。log4net中的appender应该是同步和快速的

看看我用log4net写的一篇文章。它充满了警告和缺陷。特别注意我回来时说不要写你自己的:)

这就引出了我的第二个建议

共享日志记录“服务” 一篇关于log4net邮件列表的旧帖子以这条建议结尾

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

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

NET 4.0和中的可以帮助您将一些东西旋转起来,从而将想法记录下来

结论(和实际建议) 首先,我怀疑您是否决定附加到网络文件存储。您实际上是在整个应用程序中添加网络呼叫(可能的最长和最不可靠的呼叫类型)。实施这些“修复”可能也不值得。您需要网络商店中的文件,并查看其他解决方案是否可以满足您的实际需要