2012-06-12 3 views
0

Приложение WPF использует Log4Net для записи сообщений в средство просмотра событий. Это отлично работает на большинстве машин. Однако в моем офисе есть две машины, где есть проблемы. Одна из них - физическая машина Windows 7 с 2 ГБ оперативной памяти, другая - виртуальная машина с XP, которая также имеет 2 ГБ оперативной памяти.Log4Net не создаст собственный журнал событий в средстве просмотра событий

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

Я могу добавить обработку ошибок во все вызовы журнала, но я чувствую, что этого не должен. Сообщения регистрируются в обработчике catch для еще одной ошибки, которая уже произошла. Только что я буду делать с информацией об ошибке, если она не может быть зарегистрирована?

В любом случае, я попытался создать собственный журнал событий на виртуальной машине XP вчера, и он все еще не был создан. Что именно мне нужно сделать, чтобы создать собственный журнал событий, созданный на этих двух машинах?

Тони

+0

Как вы создаете журнал событий на компьютере под управлением Windows XP? Показать код? – TheNextman

ответ

1

Оказывается, что проблема не в коде регистрации в все. Моя программа использует WPF для графического интерфейса. Это последовательность запуска делает минимальный объем работы в потоке пользовательского интерфейса, поэтому он может как можно скорее отобразить пользовательский интерфейс.

Остальная инициализация выполняется на фоне Я знал, что произошла ошибка, но я не смог найти журнал ошибок в списке журналов в средстве просмотра событий. Оказывается, мой код не нашел в базе данных данных, которые ему нужны s и пытался сообщить об ошибке. Это двухэтапный процесс, который включает первую запись ошибки в журнал, а затем отображение пользовательского диалогового окна MessageBox. Я получал XamlParseException, когда программа пыталась отобразить это диалоговое окно.

Чтобы короткая история, проблема, с которой столкнулась программа, была XamlParseException. Это было брошено, потому что я вызывал метод MessageBox'sShow в фоновом потоке, а не в потоке пользовательского интерфейса. Поскольку я не смог найти пользовательский источник событий в средстве просмотра событий, я не смог найти ошибку, поэтому я предположил, что ошибка была проблемой с разрешениями.

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

Здесь есть еще одна машина, которая имеет ту же проблему. Я уверен, что это точно такая же проблема. Я добавляю логику к обработке ошибок, чтобы убедиться, что пользовательский MessageBox всегда вызывается в потоке пользовательского интерфейса, поэтому программа не будет бомбить, если эта проблема повторяется.

0

Мы должны видеть, как вы пытались создать журнал событий на машине XP ...

Вообще, вам нужно прочитать: http://msdn.microsoft.com/en-us/library/49dwckkz(v=vs.80).aspx

В частности, к сведению обсуждения, когда для создания собственного журнала событий:

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

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

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