Где приложение WinForm должно хранить свои журналы? - PullRequest
5 голосов
/ 07 сентября 2010

Я работаю над приложением WinForm, которое позволяет работать с «проектами» (думать о приложении как о Visual Studio, а проекты как о VS Solutions).

Мой вопрос - где должно быть приложениесохранить свои файлы журналов?

Некоторые требования включают в себя:

  • приложение может не работать от имени администратора (поэтому сохранение в папке установки % ProgramFiles% не очень хороший вариант)
  • Журналы должны быть доступны конечным пользователям (либо для просмотра, либо для отправки в службу поддержки).(Это означает, что трудно найти папки, такие как % AppData% \ Company \ Application \ Version \ ProjectName ... также не являются хорошим решением)
  • Приложение может генерировать журналы, даже когдаоткрытых проектов нет (поэтому сохранение журналов в папке проекта полезно только при наличии проекта, но не окончательного решения).

Я думал о создании «рабочей папки», когдаприложение установлено - что-то вроде C: \ Application \, а затем сохраните журналы в подпапке, например % WorkingFolder% \ Logs \ ProjectName

Спасибо за ввод.

Ответы [ 8 ]

3 голосов
/ 07 сентября 2010

Где-то в каталоге пользователя находится правильное место для их хранения, если они относятся к текущему запущенному пользователю.

Некоторые программы создают папки на верхнем уровне каталога пользователя, рядом с документами и рабочим столом.другие делают это в Documents.

Создание его в C: \ может вызвать проблемы, если у пользователя нет прав на запись в корневой каталог.Вы можете в значительной степени гарантировать, что у пользователя будет доступ на запись в домашний каталог.

Другой вариант - искать переменную окружения, и, если она установлена, использовать значение в качестве местоположения, если не значение по умолчанию для пользователя.домашний каталог.

2 голосов
/ 07 сентября 2010

Если журналы только для пользователей, вы должны хранить их в %AppData%\Company\Application Name.

Если журналы являются общими (любой пользователь может видеть любой журнал), вы должны хранить их по адресу:
%ProgramData%\Company\Application Name (для Vista +)
или
%AllUsersProfile%\Application Data\Company\Application Name (для XP -)

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

Другой вариант в Vista + - это папка Public (%Public%), которая имеет ссылки в проводнике для быстрого доступа.

Куда мне записывать программные данные вместо Program Files - хорошая запись в блоге Криса Джексона из Microsoft. Хотя это и не «официальная позиция», она содержит отличную информацию.

0 голосов
/ 07 сентября 2010

Если приложению нужно вести журнал только для пользователей, вошедших в текущий период времени, вы можете сохранить его в c: /temp.

Большинство моих winapps, я оставляю их там, поэтому автоматическиудаляется, когда пользователь выходит из системы.

Конечно, это в первую очередь зависит от ваших требований.

0 голосов
/ 07 сентября 2010

Я думаю, что% APPDATA% \ YourCompanyName \ YourAppName является предпочтительным местом. Чтобы преодолеть ваше возражение по поводу того, что это местоположение трудно найти, вы могли бы довольно легко и быстро внедрить в свое приложение простой экран поддержки, чтобы конечный пользователь мог без особых проблем получать доступ к этим журналам и отправлять их по электронной почте, чтобы пользователь мог не нужно запоминать или вручную переходить к длинному пути, чтобы попасть в журналы.

Мне не очень нравится, что пользователь может установить это местоположение с помощью установщика из-за возможных проблем с именами и разрешениями.

0 голосов
/ 07 сентября 2010

Вы можете просто добавить кнопку / пункт меню в легко открываемую папку с журналами. Лучшее место для журналов -% AppData% \ AppName или% temp% \ AppName. Никогда не используйте% MyDocs% или% Program Files%.

0 голосов
/ 07 сентября 2010

Что вы планируете делать с журналами.Они технические, для финансового аудита / аудита безопасности?

EventLog - хорошее место для технических журналов, потому что вы можете получить к нему доступ удаленно (в Домене), и он очищается автоматически.

% AppData% также является хорошим местом для технических журналов, особенно если вы не можете подключиться к журналу событий.Вы можете найти файлы журналов и направить к ним конечного пользователя, но они не «в лицо» конечному пользователю.Вы можете включить кнопку «отправить журнал производителю», чтобы получить их.

Для журналов, к которым должен обращаться конечный пользователь, «Мои документы» (или подпапка) выглядят хорошо.

0 голосов
/ 07 сентября 2010

Я бы предложил добавить этот вопрос в программу установки, чтобы пользователь, устанавливающий программное обеспечение, мог решить, куда лучше поместить журналы.Хотя C:\[AppName\ звучит как разумное значение по умолчанию для ваших требований.

Редактировать: Просто продуманный, вероятно, стоит предупредить пользователя, если выбрать неправильное местоположение (в Program Files или в корне системыдиск и т. д.) и если они решат создать новый каталог, автоматически предоставьте этому каталогу правильные разрешения во время установки.

0 голосов
/ 07 сентября 2010

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

...