Статьи

Нужно приложение CF для отслеживания ошибок из нескольких приложений? Проверьте BugLogHQ

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

После небольшого исследования я попал на домашнюю страницу для регистратора ошибок с открытым исходным кодом BugLogHQ , созданного Оскаром Аревало . Основываясь на списке изменений проекта, он звучал так, словно у него были нужные мне функции, но на сайте было не так много поясняющей документации, а изображения на скриншотах были миниатюрами, которые нельзя было увеличить. И он не поддерживал Oracle, который является нашим основным механизмом работы с базами данных (и обзор форума групп Google для BugLogHQ подтвердил это).

Несмотря на эти факторы, я решил, что стоит добавить поддержку Oracle в базу кода, чтобы я мог ее запустить и опробовать. Я рад, что сделал это: BugLogHQ — это хорошо разработанное, надежное приложение для управления ошибками таким образом, которое все еще позволит мне отслеживать, что происходит с моими приложениями. Теперь, когда я увидел, как он работает и что он может сделать, я был несколько удивлен, что мне пришлось провести исследование, чтобы натолкнуться на него: либо он полностью проскользнул под моим радаром, либо ему нужно больше рекламы / разоблачения в сообществе.

Снимок экрана с приборной панелью

Несколько вещей, которые мне нравятся в BugLogHQ:

  • Мне нравится тот факт, что легко приступить к работе. Загрузите файлы, поместите их в каталог «buglog» в webroot (или используйте отображение), запустите сценарий установки SQL для выбранной вами базы данных (mySQL, PostgreSQL, MS SQL 2000/2005, MS Access, а теперь Oracle). обновите файл конфигурации, указав имя источника данных и ядро ​​базы данных, и просто укажите веб-браузер на этот каталог «buglog». После входа в систему (что заставляет вас изменить пароль по умолчанию для встроенной учетной записи администратора), вы можете проверить, все ли работает, зайдя в область настроек приложения и запустив тесты, которые имитируют методы других ваших приложений ( упоминается на языке BugLog как «клиентские» приложения) может использоваться для передачи ошибок в BugLogHQ. Просто и понятно.

  • Так же, как большинство почтовых клиентов имеют правила фильтрации и обработки входящих сообщений электронной почты, BugLogHQ предоставляет некоторые правила для управления входящими ошибками. Вы можете настроить несколько правил «mailAlert», которые будут пересылать сообщения об определенных ошибках (фильтруются по типу / серьезности ошибки). имя хоста исходного приложения или имя приложения или ключевые слова в сконфигурированном тексте сообщения об ошибке) на выбранный вами адрес электронной почты, или вы можете создать правило mailRelay, которое передает каждую полученную ошибку на адрес электронной почты. И электронные письма, отправляемые BugLogHQ, являются не просто уведомлениями об ошибках: они содержат полную информацию об ошибках, поэтому вам не нужно заходить в BugLogHQ для получения дополнительной информации. Существуют также правила для отбрасывания определенных ошибок или для мониторинга передач «пульса» из приложения,поэтому, если приложение не работает в течение определенного периода времени, BugLogHQ может сообщить о проблеме.

  • Методология, которую BugLog использует для сообщения об ошибках, очень хорошо разработана. Если ваше клиентское приложение также является приложением CFML, вы просто создаете экземпляр одного CFC (с настройками для взаимодействия с веб-сервисом BugLogHQ, который вы хотите использовать) либо в области приложения, либо на фабрике компонентов, а затем вызываете его с функцией уведомления всякий раз, когда вы хочу отправить информацию в приложение BugLogHQ. Если клиентское приложение сообщает об ошибке, вы можете отправить BugLogHQ строку текста сообщения, структуру ошибки (необработанную структуру «cfcatch»), тип / серьезность ошибки и структуру любой дополнительной информации, которую вы хотите получить как часть отчета (например, идентификатор или имя затронутого пользователя). Вот как я это вызвал из функции контроллера main.error () в приложении FW / 1, которое я использовал во время тестирования (где я создал экземпляр CFC как объект службы)

public void function error(rc) {
    var extraInfo= {username= session.user.getUsername()};
    variables.bugLogService.notifyService("Error report from TestApp1",request.exception,extraInfo,"INFO");
}
  • Все эти параметры являются необязательными, поэтому вам не нужна структура ошибок, если вы сообщаете о чем-то, что является статусным или информационным сообщением, а не ошибкой. Если при отправке отчета в BugLogHQ возникнет проблема, он откажется от отправки электронного письма, содержащего всю эту информацию, на любой указанный вами адрес, чтобы ошибка не пропала.

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

  • BugLogHQ использует запланированное задание (с интервалом по умолчанию 2 минуты), называемое в приложении «BugLog Listener Service», для обозначения и обработки входящих сообщений об ошибках. При запуске задачи сообщения об ошибках, полученные с момента последнего запуска задачи, обрабатываются и затем записываются в базу данных ошибок. Если есть проблема с записью в базу данных (с которой я, разумеется, столкнулся, когда настраивал код для поддержки Oracle), он будет сохранять ошибки в очереди до следующей итерации (и вы сможете просматривать содержимое очереди в пределах Панель инструментов BugLogHQ). Иногда вам нужно перезапустить эту службу, чтобы изменения вступили в силу. Если вы как-то забудете повторно активировать службу, она будет перезапущена при получении нового отчета об ошибке из клиентского приложения.

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

  • Существуют параметры конфигурации для привязки BugLogHQ к экземпляру JIRA, предоставления сводок об ошибках через RSS или дайджест-сообщение и установки ключа API, чтобы гарантировать, что только ваши приложения могут отправлять данные в BugLogHQ.

Скриншот полного сообщения об ошибке

Итог: если у вас еще нет приложения для регистрации ошибок или другого механизма для хранения и управления ошибками из ваших приложений, вы должны взглянуть на BugLogHQ. Оскар и его сотрудники проделали большую работу с этим приложением.