запись в файл log4net. Как открыть разрешения - PullRequest
1 голос
/ 29 сентября 2011

Я с радостью использовал log4net с моей программой WPF на компьютере с XP и с удовольствием использовал fileAppender FileAppender для записи сообщений журнала в c: \ log.txt.Все было хорошо.Тем не менее, он не работает на компьютере с Windows 7.Никаких ошибок или чего-то еще, просто файл не создан, а тем более зарегистрирован.Небольшое исследование показывает, что это проблема с правами доступа к файлам (UAC) в Windows 7, и на самом деле она работает, если я запускаю исполняемый файл от имени администратора.Он не работает, если я просто нажимаю на него (даже если я вошел в систему как администратор) и не работает, когда я запускаю из Visual Studio.

Вопросы: 1. Может кто-то указать мне например, где я спрашиваю разрешение на запись в один и только один файл (C: \ log.txt).Я видел несколько примеров того, как app.config настроен для запроса, что вся программа запускается с правами администратора.Это кажется излишним, но я думаю, это сработает.2. Есть ли лучший способ отправить информацию в файл журнала?В конце концов, возможно, C: не существует на компьютере пользователя.Мне кажется, я вспоминаю идею «пользовательского раздела» в Windows 7, но все, что я делаю, должно работать на XP и Vista.

Спасибо огромное, Дейв

Ответы [ 2 ]

5 голосов
/ 29 сентября 2011

Вы не должны пытаться писать напрямую в корневую папку. В Windows 7 вам придется либо работать от имени администратора, либо отключить UAC, чтобы это работало, и ни один из них не рекомендуется.

Вместо этого вы можете записать в папку в области «данные приложения»

Если вы используете файл .config для настройки журнала, вы можете использовать что-то вроде

<file value="${ALLUSERSPROFILE}\CompanyName\ProductName\Log.txt" />

или

<file value="${APPDATA}\CompanyName\ProductName\Log.txt" />

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

(Очевидно, вы заменяете CompanyName и ProductName своими данными).

Это должно работать на Xp / Vista / W7.

0 голосов
/ 29 сентября 2011

У вас есть 3 варианта в моих глазах:

  1. как упомянуто, всегда запускайте ваше приложение как администратор, хотя это не блестящее решение

  2. Используйте локальный путь исполняемого приложения для хранения вашего журнала - я всегда предпочитаю этот метод, поскольку я всегда знаю, где находятся мои журналы (AppDomain.CurrentDomain.BaseDirectory поможет вам)

  3. Используйте «Мои документы» или некоторые подобные специальные папки - быстрый Google дает нам: Специальные папки

Надеюсь, это поможет.

...