Нет типа Timeout
или аналогичного свойства ни в одном из типов FileAppender
. Я посмотрел на source для appender, и он не делает ничего особенного (от файлового appender до каркаса appender есть странный путь к фактическому типу макета сообщения, чтобы увидеть все записи потока).
У меня есть две рекомендации ...
Пользователь на помощь!
Вы можете попробовать написать собственный аппендер, который включает в себя все виды защиты от сети (NetworkFileAppender
имеет приятное звучание). Но вы должны действительно рассмотреть дизайн. Предполагается, что приложения в log4net работают синхронно и быстро.
Посмотрите на сообщение, которое я написал о производительности, добавляющей с log4net. Это полно предостережений и недостатков. Обратите особое внимание на ту часть, куда я вернулся и сказал не писать свой собственный асинхронный аппендант :)
Это подводит меня ко второй рекомендации
Общий логинг "Сервис"
Старая запись о асинхронном файле, добавляющем в список рассылки log4net, закончилась этой рекомендацией
Я бы предложил использовать общий буфер с одним рабочим потоком, который регистрирует буфер, как только он достигает определенного размера.
Этот сервис должен быть отделен от вашего основного приложения (может быть, просто фоновый поток). Он должен включать в себя всю защиту от сети, которая, вероятно, включает в себя другое локальное хранилище файлов (если вы не можете потерять сообщения).
BlockingCollection в .NET 4.0 и Библиотека задач могут помочь вам кое-что раскрутить, чтобы изложить идеи.
Вывод (и реальная рекомендация)
Я ставлю под сомнение ваше решение сначала добавить сетевое хранилище файлов. По сути, вы добавляете сетевые вызовы по всему вашему приложению (самый длинный и наименее гарантированный вид вызовов). Это также, вероятно, не стоит усилий для реализации любого из этих «исправлений». Спросите, почему вам нужны файлы в сетевом магазине, и посмотрите, может ли другое решение удовлетворить ваши реальные потребности.