2013-03-21 2 views
2

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

Это все работает отлично и dandy, если у меня есть жесткий кодированный путь к Log4Net Config. Пример: c: \ inetpub \ wwwroot \ logging.config

То, что я хотел бы сделать, это ссылку на этот файл logging.config без указания буквы диска или предпочтительно через относительный путь. Это позволит легко переключать среды в случае, когда веб-сайты теперь существуют на дисках E: \ или D: \ или F: \.

Я пробовал ссылаться на файл в этой форме: \ inetpub \ wwwroot \ logging.config - но Log4Net, похоже, не забирает его.

Я также рассматривал захват буквы диска из HttpRuntime.AppDomainAppPath в коде, но это кажется настолько взломанным.

Кто-нибудь придумал причудливый метод ссылки на внешний файл конфигурации Log4Net с использованием ссылочных путей вместо жестко закодированных путей?

Благодарим вас за любую помощь. :)

+0

Являются ли файлы log4net.config и web.config в одной папке? Если это так, вам не нужно указывать путь. – nimeshjm

ответ

6

У меня была та же проблема. Я хотел создать папку Logs в моем решении и поместить все журналы в нее, но она не работала без буквы диска.

Я добавил обратную косую черту перед именем папки и после ее удаления.

<file value="Logs\RedmineTaskCreator.log" /> 

Просто убедитесь, что папка Журналы существует. Я не уверен, будет ли log4net создавать папку. Надеюсь, это сработает для вас.

+0

Имейте в виду, что обратная косая черта должна быть экранирована с помощью \\ – Ephedra

+3

@Ephedra XML не intepret \ как escape-символ, как C#. – Hans

+2

log4net автоматически создает папку. – Tonatio

Смежные вопросы