Инструкции для входа (трассировки) в [закрытом] Приложении Windows

7
задан user200783 4 March 2010 в 06:21
поделиться

6 ответов

Вы должны использовать установленную структуру ведения журналов для платформы, если она доступна . Для log4j (java), log4net (.net) и т. Д. Большинство установленных фреймворков будут иметь способы увеличивать и уменьшать ведение журнала (и тем самым влиять на производительность) очень точными способами. Вам придется все это повторить.

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

О, и не беспокойтесь о производительности, пока она не станет проблемой (это не значит, что не думайте об этом, просто не выполняйте микрооптимизацию, пока вам не понадобится).

7
ответ дан 6 December 2019 в 21:12
поделиться

Искусство ведения журнала содержит несколько полезных рекомендаций.

Для ведения журнала я использую Simple Logging Façade как абстракцию для используемой реальной структуры ведения журнала.

Дополнительная информация:

2
ответ дан 6 December 2019 в 21:12
поделиться

Я согласен с тем, что журнал событий Windows - неподходящее место для журналов разработчика. Хотя они служат удобным местом для ведения журнала, экспорт информации журнала несколько проблематичен, и в конечном итоге я считаю, что журнал событий следует использовать только для регистрации информации, представляющей интерес для системного администратора.

Что касается того, где должен храниться этот файл, где бы он ни находился, имейте в виду, что Windows 7 и Vista делают шаг в направлении дальнейшей изоляции пользователей, что означает, что запись в папку Program Files потребует прав администратора. Работайте с этим и не требуйте, чтобы приложение запускалось от имени администратора. Кроме того, рекомендаций у меня нет.

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

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

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

3
ответ дан 6 December 2019 в 21:12
поделиться

Я нашел log4net очень эффективным. Обычно я использую как приложение с динамическим файлом в формате XML log4j, которое может быть аккуратно прочитано и отображено Chainsaw, так и другое приложение, которое ведет журнал непосредственно в консоли отладки.

Уровень ведения журнала можно легко установить в файле XML. Для распространения я переключаю уровень ведения журнала на «Информация» или полностью выключаю. В случае проблемы это можно снова включить в отладку.

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

0
ответ дан 6 December 2019 в 21:12
поделиться

Вы можете использовать Enterprise Library Блок приложения регистрации . Это простой настраиваемый регистратор с множеством простых в использовании функций. Следуя обеим приведенным выше ссылкам, вы быстро заработаете.

0
ответ дан 6 December 2019 в 21:12
поделиться

Я предлагаю использовать существующую библиотеку, такую ​​как log4net или блок приложения Ent lib Logging.

Лично блок приложения Logging был излишним и слишком сложным для моих целей.

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

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

0
ответ дан 6 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: