Запись данных в один файл из нескольких экземпляров одного приложения, C #, Visual Studio 2008 - PullRequest
2 голосов
/ 08 сентября 2010

У меня есть проект Visual Studio, который устанавливается примерно на половине компьютеров в нашей компании.

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

static string _appPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), Application.CompanyName);

По большей части это работает хорошо и позволяет мне получить доступ к файлам журналов на отдельных компьютерах.

Это не работает везде.У некоторых пользователей есть ограниченные учетные записи, которые не имеют разрешений на запись в папку Environment.SpecialFolder.CommonApplicationData.

Я мог бы изменить путь для хранения здесь:

static string _newPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Application.CompanyName);

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

Я хотел бы сохранить эти сообщения во внутренней сети.Проблема заключается в том, как обрабатывать несколько экземпляров записи.

static string _netPath = Path.Combine(@"\\FileServer1", Application.CompanyName);

Я бы хотел использовать Messaging, но я не уверен, как это сделать - или если это было бы хорошим решением для этого,Руководство хочет, чтобы я выпустил это обновление в эту пятницу (сегодня среда).

Какой самый простой и надежный способ использования _netPath для хранения файлов журналов с примерно 100 компьютеров в нашей сети?

Примечание: Пожалуйста, если вы ссылаетесь на MSDN, вставьте статью.У нас есть старый брандмауэр Microsoft ISA, который не может пропускать сайты MSDN.(Сервер ISA отключается каждый раз, и это так раздражает! См. Прокси-сервер ISA не может ... для моего оставшегося без ответа вопроса.)

Ответы [ 3 ]

5 голосов
/ 08 сентября 2010

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

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

1 голос
/ 08 сентября 2010

Добавьте имя компьютера к имени файла ... Тогда у вас не будет всех экземпляров, записывающих в один и тот же файл, и когда вы получите вызов в службу поддержки, вы можете сразу перейти к файлу для компьютера пользователя, который былlogged from ...

В качестве альтернативы, просто используйте простую службу WCF (даже самостоятельно размещенную) для управления записью в файл, все другие машины просто вызывают метод обслуживания

MSMQ через WCF тоже

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

Что если бы вы использовали централизованный сервис для этого? Создайте простой веб-сервис регистрации на каком-либо внутреннем сервере и отправьте данные в веб-сервис. Таким образом, только веб-сервис будет нуждаться в доступе к файлам журналов, если каждый может прикоснуться к сервису. Затем вы можете хранить их все в одной папке или делать с ними все, что захотите.

Конечно, это не должен быть веб-сервис, но это довольно быстрый и простой способ, и это первое, что приходит на ум. На самом деле любое централизованное приложение, которое могут использовать ваши клиенты, должно сработать.

...