Где находятся файлы журнала log4net? - PullRequest
5 голосов
/ 16 ноября 2011

У меня есть приложение для Windows, которое пишет в лог файлы, используя log4net.Путь к файлу журнала в файле app.config определяется следующим образом:

<file type="log4net.Util.PatternString" value="Logs/LogFileName" />.

У меня есть проект установки msi, который устанавливает вышеуказанное приложение.Я устанавливаю приложение на компьютер разработчика, запускаю установленное приложение и, как и ожидалось, оно записывает файлы журнала в каталог InstallDirectory / Logs /.На компьютере разработчика есть Win XP SP3 со всеми разрешениями на чтение.

Но когда я устанавливаю то же самое на тестовой машине с Windows 7, и я не уверен в разрешениях, «Журналы» отсутствуют.каталог и никаких файлов журнала.

В обоих случаях InstallDirectory - это C: \ Program Files \ Dir1 \ Dir2.

Пока я пытаюсь выяснить, где находятся файлы, на тестовой машинедобавив:

log4net.Appender.FileAppender rootAppender = (log4net.Appender.FileAppender)((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root.Appenders[0];
string filename = rootAppender.File;
MessageBox.Show(filename);

к коду, может кто-нибудь, пожалуйста, пролить свет.

  • Почему файлы могут отсутствовать?
  • Есть ли в Win 7 другие способы работы с новыми файлами на установленном диске Windows?

Ответы [ 3 ]

8 голосов
/ 16 ноября 2011

Как уже говорили другие, не работайте с правами администратора, чтобы обойти эту проблему. Запишите в папку / файл, к которому у вас есть доступ.

Вы можете расширить переменные среды в своей конфигурации, чтобы получить специальные папки:

https://web.archive.org/web/20121226213809/http://www.l4ndash.com/Log4NetMailArchive/tabid/70/forumid/1/postid/16299/view/topic/Default.aspx

(или, как рекомендовано в удаленном сообщении по этому вопросу Jon Skeet , статья, которая является несколько более общей: Где мне писать программные данные вместо программных файлов? )

Попытка:

${LocalAppData}/MyProgram/Logs/Filename

Или просто:

${AppData}/MyProgram/Logs/Filename

Что из этих двух выбрать - я не уверен, что такое "роуминг", поэтому я не знаю, почему вы бы предпочли AppData или LocalAppData. Наверное, стоит другой вопрос:)

6 голосов
/ 16 ноября 2011

Это проблема с разрешениями. В Windows 7 стандартные пользователи не могут писать в каталог Program Files. Поэтому, если вы не запускаете свое приложение как администратор, Log4Net не может создать этот подкаталог. Вам нужно будет либо предоставить кому-либо права на запись в каталог Logs/LogFileName при установке приложения, либо поместить файл журнала в соответствующую папку c:\users\username\Application Data\AppName.

1 голос
/ 16 ноября 2011

В Windows7 вы должны писать в папку C:\Users\<CurrentUser>. Вы можете создать папку installlog здесь.

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