Конфигурация Log4Net во внешнем файле не работает - PullRequest
87 голосов
/ 15 января 2009

Мы используем log4net и хотим указать его конфигурацию во внешнем конфигурационном файле (как мы это делали с другими разделами). Для этого мы изменили раздел log4net в App.config на:

...
<section name="log4net" 
     type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
...
<log4net configSource="Log.config" />
...

А в файле Log.Config (тот же каталог, что и у App.config) мы имеем:

<log4net>
  <appender name="General" type="log4net.Appender.FileAppender">
    <file value="myapp.log" />
    <layout type="log4net.Layout.SimpleLayout" />
  </appender>
  <root>
    <appender-ref ref="General" />
  </root>
</log4net>

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

Если мы переместим содержимое файла Log.config обратно в App.config (заменив первую строчку кода выше), он будет работать как положено. Есть идеи, почему он не работает во внешнем файле?

Ответы [ 12 ]

0 голосов
/ 17 февраля 2018

В моем случае я получил это сообщение об ошибке:

log4net: config file [C:\........\bin\Debug\log4net.config] not found.

И log4net.config файл находился в проекте Visual Studio 2017, но когда я проверил файл в папке bin\Debug, я не смог его найти.

Моя первоначальная установка сборки была такой:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

После некоторого времени исследования я изменяю его на следующее, и оно работает:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"..\..\log4net.config", Watch = true)]
0 голосов
/ 15 января 2009

@ Mitch, получается, что есть файл с объявлением [assembly: ...], но у него не было свойства ConfigFile.

Как только я добавил его и указал на Log.config, он начал работать. Я бы подумал, что он будет работать как все остальные разделы конфигурации (т.е. AppSettings) и будет принимать внешние файлы конфигурации без изменений.

У нас нет второго упомянутого вами утверждения, поскольку мы заключаем его в глобальный поставщик статического журнала.

...