RollingfileAppender не смог ответить из-за определенной конфигурации, хотя AdonetAppender работает нормально - PullRequest
0 голосов
/ 09 июля 2010

В обычной конфигурации отдельного XML-файла, который я помещаю в мой корневой каталог, мое приложение прекрасно работает с обоими приложениями.

Однако я нашел простой и более эффективный способ настройки из внешнего файла, который позволил мне гибко использовать один и тот же файл конфигурации для разных приложений ...

Также еще одним преимуществом является то, что мне не нужно вносить какие-либо изменения в global.asax и сборку.

Вот код, который я добавил в мой web.config

<appSettings>
    <add key="log4net.Config" value="C:\\log\Log4Net.config"/>
</appSettings>

Этот код должен положить файл конфигурации в мой корневой каталог. И все, что мне нужно было сделать, это сослаться на log4net.dll и начать регистрацию.

Несмотря на то, что мой AdoNetAppender полностью работает нормально, я сразу вижу сообщения в своей таблице. Но мои fileAppenders не создают никаких файлов и не регистрируют сообщения в существующих файлах. Этот способ совместим только с базой данных или я что-то упустил?

Ответы [ 2 ]

1 голос
/ 09 июля 2010

Вы можете установить для параметра LockingModel объекта RollingFileAppender значение MinimalLock, чтобы заставить аппендера открывать и закрывать файл для каждого события регистрации. Не совсем эффективно, и есть вероятность, что одно приложение не сможет войти в систему, если оно попытается войти в одно и то же время, но если ваша частота регистрации достаточно низкая, этого может быть достаточно.

Лучшим решением является использование строки шаблона для имени файла приложения, которое включает имя приложения; таким образом, разные приложения могут использовать один и тот же файл конфигурации, но будут записывать в разные файлы журнала. В большинстве случаев для этой цели подойдет переменная «% appdomain» (хотя для веб-приложений или приложений ClickOnce вам нужно немного более креативно).

0 голосов
/ 09 июля 2010

С помощью стандартного RollingFileAppender невозможно войти в один файл из нескольких процессов, потому что appender блокирует файл для записи в него. FAQ по log4net предоставляет решение для этого.

См. log4net FAQ

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...