Денис Пестрецов
21.02.2019
738

Дебаг FreePBX 13

В данной статье рассмотрим логирование FreePBX 13 версии. Разберёмся, как включать/отключать логирование, рассмотрим, как пользоваться встроенной во FreePBX функцией dbug, при разработке собственного кода. Рассмотрение начнём с функции dbug. Dbug По умолчанию, функция дебага FreePBX выключена. Разберёмся, как её включить. Сделать это можно двумя способами. Способ 1. Включение дебага через web-интерфейс. Переходим на вкладку Settings […]

В данной статье рассмотрим логирование FreePBX 13 версии. Разберёмся, как включать/отключать логирование, рассмотрим, как пользоваться встроенной во FreePBX функцией dbug, при разработке собственного кода.

Рассмотрение начнём с функции dbug.

Dbug

По умолчанию, функция дебага FreePBX выключена. Разберёмся, как её включить. Сделать это можно двумя способами.

Способ 1. Включение дебага через web-интерфейс. Переходим на вкладку Settings -> Advanced Settings. Среди прочих, находим настройку Disable FreePBX dbug Logging. Меняем положение выключателя на No.

Соответственно, Disable FreePBX dbug Logging в положении No включает дебаг, а в положении Yes – отключает.
Включение дебага средствами web-интерфейса

Подробнее о других настройках на вкладке Advanced Settings можно найти в статье: Обзор Advanced Settings FreePBX 13

По умолчанию логи пишутся в файл: /var/log/asterisk/freepbx_dbug. Также на скриншоте видно, что можно поменять назначение записи логов.

К примеру, можно поменять на /var/log/asterisk/freepbx_mylog. Выведем последние 50 строк лога в этом файле, командой:

tail -n 50 /var/log/asterisk/freepbx_mylog

Получим следующий результат (Ваш результат может отличаться от представленного в примере (будет зависеть от произведённых действий во FreePBX)):

Изменение файла логирования
Если файл freepbx_mylog не был создан, то он создастся автоматически при первой записи логов.

Если файл оказался пустым, или вообще не созданным, то следует перепроверить, что настройка

Disable FreePBX dbug Logging стоит в «No».

Теперь рассмотрим второй способ запуска дебага во FreePBX.

Способ 2. Включение дебага из консоли.

Производится командой:

fwconsole dbug
Также, алиасом для данной команды является fwconsole debug (делает то же самое).

После выполнения данной команды, на экран консоли выведутся последние строки следующих файлов:

1) файла дебага, указанного в настройке Settings -> Advanced Settings -> Debug File (см. способ 1). В нашем примере это freepbx_mylog.

2) файла ошибок web-сервера /var/log/httpd/error_log (здесь также можно увидеть ошибки выполнения PHP скриптов);

3) файла безопасности /var/log/asterisk/freepbx_security.log;

4) файла логов FreePBX /var/log/asterisk/freepbx.log.

Пример fwconsole dbug

Как только введена команда fwconsole dbug, сразу значение параметра Disable FreePBX dbug Logging выставляется в «No», то есть становиться включенным.

После проведения дебага не забывайте ставить этот параметр в «Yes».

Для получения справки о свойствах и параметрах команды fwconsole dbug следует ввести в консоли:

fwconsole dbug -h
Параметры fwconsole dbug

Рассмотрим параметры данной команды:

                skipstandart (-s) – исключает из вывода файл freepbx.log;

                help (-h) – вывод справки по текущей команде;

                quiet (-q) – тихий режим (не выводит системные сообщения, оставляя только логи);

                verbose (-v|vv|vvv) – выбирается уровень детализации логов, где -v – минимальная детализация, а -vvv – максимальная;

                version (-V) – отображает текущую версию утилиты FW Console;

                ansi – отображает весь вывод в кодировке ANSI;

                no-ansi – отключает вывод в кодировке ANSI;

                no-interaction (-n) – отключает все интерактивные сообщения в консоли.

Перейдём к рассмотрению работы стандартной функции dbug в коде FreePBX.

Функция dbug в коде

Рассматривать будем на примере модуля Time Conditions. Все работы будем производить с файлом …/admin/modules/timeconditions/Timeconditions.class.php.

Подробнее о работе с модулем Time Conditions можно прочесть в статье правила по времени во FreePBX

Функция dbug в коде модуля FreePBX может вызываться с количеством параметров от 1 до 3-х.

Рассмотрим несколько случаев:

1) передача в лог информативного сообщения (к примеру, о том, что функция начала или завершила своё выполнение). Производится командой:

dbug(‘message’)

Пример: выведем информацию о том, что функция doConfigPageInit класса Timeconditions начала своё выполнение. Для этого в начале данной функции (в файле) пишем:

public function doConfigPageInit($page) {
     dbug(‘begin function doCondigPageInit’);

Запускаем в консоли fwconsole dbug и заходим на страницу Applications -> Time Conditions.

На экране появилась следующая информация: OUT > с указанием файла, куда будет записан вывод (в примере freepbx_mylog); время записи в файл; название файла, отправившего запись в лог (Timeconditions.class.php:номер_строки); информативное сообщение.

Пример вывода сообщения

2) вывод строковой переменной, с подписью, в лог. Производится командой:

dbug(‘message’, $variable)

Пример: выведем наименование текущей страницы, в которую попадаем, хранящуюся в переменной $page. В ней, по умолчанию, хранится одно из двух значений: “timeconditions ” или “timegroups”. Для этого, в уже знакомой нам функции doConfigPageInit допишем следующую строку:

public function doConfigPageInit($page) {
      dbug('This page is ', $page);

Теперь, если заходим на страницу Applications -> Time Conditions, то видим сообщение «This page is timeconditions», а заходя на страницу Time Groups «This page is timegroups».Остальной вывод аналогичен предыдущему пункту, поэтому его повторно рассматривать не будем.

Рис. 6. Вывод строковой переменной с подписью

3) вывод всех элементов массива, с подписью, в лог. Производится командой:

dbug(‘message’, $arr, 1)

В данной команде, для вывода массива используется функция var_dump (вместо print_r).

Отличительной особенностью функции var_dump, от print_r, является то, что она выводит кроме обычного вывода элементов массива, также их тип.

Пример: выведем массив, содержащий все переданные переменные, содержащиеся в массиве $_REQUEST. Для этого, также в функцию doConfigPageInit добавляем следующую строку:

dbug(‘Variables from REQUEST: ’, $_REQUEST, 1);

Переходя на вкладку Applications -> Time Conditions, увидим в консоли информацию по текущему состоянию массива $_REQUEST. Данный вывод бывает полезен для того, чтобы узнать, какие данные передаются между страницами (к примеру, если зайти в режим редактирования любого правила по времени и нажать кнопку «Submit», то увидим полный список параметров, которые будут записаны в базу).

Вывод массива переменных с подписью
Для вывода элементов массива без их типов (аналогично выводу функции print_r), следует использовать команды: dbug($array) и dbug(‘message’,$array).

Итак, мы рассмотрели примеры использования функции dbug в коде модулей FreePBX. Также, функцию dbug() можно вызывать и без параметров. При этом она выведет в консоль и лог-файл текущее значение даты и времени сервера.

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices