Использование логов

При покупке библиотеки Shell Ace появляется возможность логгирования вызовов всех методов интерфейсов, реализуемых расширением оболочки. Включить логгирование можно с помощью использования соответствующей директивы в файле decShellExtension.inc из состава Shell Ace.

Использование CodeSite

CodeSite – это профессиональный сервис логов в режиме реального времени от компании Raize Software. Данный сервис в редакции Express входит в состав Delphi начиная с версии XE, для старых версий Delphi ее можно приобрести отдельно.

Для включения логгирования с помощью CodeSite нужно добавить в файл decShellExtension.inc строку {$DEFINE USE_CODESITE} и перекомпилировать ваше расширение. После этого при использовании вашего расширения системой при вызове любого метода в окне CodeSite Live Viewer будет выводиться в реальном времени подробный лог с выводом значений всех входных и выходных параметров и результата работы метода:

Окно CodeSite Live Viewer

Использование текстовых логов

В ряде случает использование CodeSite невозможно. Например, Browser helper object в современных версиях Internet Explorer может работать в режиме Enhanced Protected Mode. В данном режиме BHO имеет пониженные привилегии и не сможет корректно работать с сервисом CodeSite.

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

  1. Добавить в файл decShellExtension.inc строку {$DEFINE USE_FILELOGS}
  2. Добавить в секцию Initialization любого модуля строку вида LogStream := TFileStream.Create(LogFileName, fmCreate), где LogFileName – это имя файла, в который будут сохранятся логи в текстовом виде. Созданный объект будет автоматически удален при закрытии библиотеки. Рекомендуется, что бы файл располагался в %USER PROFILE%\AppData\LocalLow, поскольку запись и создание подкаталогов в данной папке гарантировано возможны. В тоже время имя файла было уникальным, поскольку одновременно могут быть загружены несколько копий расширений. Один из вариантов кода:
  3. Some code here

  4. Перекомпилировать ваше расширение.

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

Не забывайте отключать директивы {$DEFINE USE_CODESITE} и {$DEFINE USE_FILELOGS} при создании финальной сборки.

Смотрите также: