VtigerCRM - how to show debug messages

VtigerCRM - how to show debug messages

Официальная документация говорит нам - для того, чтобы получить подробную информацию о том, что происходит в системе и записать всё это дело в лог файл, достаточно проделать следующее:

1. Включить библиотеку LOG4PHP в файле config.performance.php. В этом файле необходимо изменить строчку на:

'LOG4PHP_DEBUG' => true,

2. В файле  log4php.properties изменить строчку на:

log4php.rootLogger = DEBUG, A1

Если вы проделали эти трюки, то файл логов, который располагается в папке logs у вас будет наполняться системными сообщениями.

Но есть нюанс, логи не включают в себя сообщения с базы данных. Чтобы их вывести на экран, нужно внести изменения в файл include/database/PearDatabase и в самом конце файла заменить строчки на:

if(empty($adb)) {

 $adb = new PearDatabase();

 $adb->connect();

 // ADD THIS LINE

 $adb->setDebug(true);

}

т.е. нужно добавить одну строчку в условие.

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

Если этого не достаточно, то можно использовать библиотеку Tracy - очень полезный инструмент для программистов. Он позволяет:

- быстро найти ошибку.

- Писать ошибки в логи.

- делать дамп переменных.

- измерять время выполнения скрипта.

Чтобы подключить эту библиотеку, нужно сделать следующие шаги:

1. Скачиваем библиотеку по ссылке: https://github.com/nette/tracy/releases

2. Распаковываем всё содержимое в папку include.

3. Начинаем править файл: libraries/HTTP_Session/Session.php

4. Меняем функцию - function start.

было:

function start($name = 'SessionID', $id = null)

    {

        HTTP_Session::name($name);

        if ($id) {

            HTTP_Session::id($id);

        } elseif (is_null(HTTP_Session::detectID())) {

            HTTP_Session::id($id ? $id : uniqid(dechex(rand())));

        }

        session_start();

        if (!isset($_SESSION['__HTTP_Session_Info'])) {

            $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_STARTED;

        } else {

            $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_CONTINUED;

        }

    }


    Стало:
    function start($name = 'SessionID', $id = null)   

    {

        HTTP_Session::name($name);

        if ($id) {

            HTTP_Session::id($id);

        } elseif (is_null(HTTP_Session::detectID())) {

            HTTP_Session::id($id ? $id : uniqid(dechex(rand())));

        }

//----------- START TRACY IMPLEMENTATION -----------

        $sessionid = session_id();

        if(empty($sessionid)) {

            session_start();

        }

//----------- END TRACY IMPLEMENTATION -----------        

        if (!isset($_SESSION['__HTTP_Session_Info'])) {

            $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_STARTED;

        } else {

            $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_CONTINUED;

        }

    }


    5. Далее нужно внести изменения в файл index.php:

    было:

    //Overrides GetRelatedList : used to get related query

//TODO : Eliminate below hacking solution

include_once 'include/Webservices/Relation.php';

include_once 'vtlib/Vtiger/Module.php';

include_once 'includes/main/WebUI.php';

$webUI = new Vtiger_WebUI();

$webUI->process(new Vtiger_Request($_REQUEST, $_REQUEST));

 

Стало:

//Overrides GetRelatedList : used to get related query

//TODO : Eliminate below hacking solution

include_once 'config.php';

include_once 'include/Webservices/Relation.php';

include_once 'vtlib/Vtiger/Module.php';

include_once 'includes/main/WebUI.php';

//----------- START ITS4YOU TRACY IMPLEMENTATION -----------

session_start();

$session_tracy = false;

if(isset($_REQUEST['tracy'])){

    if($_REQUEST['tracy'] == 'start') {

        $_SESSION['its4you_tracy'] = true;

    } else {

        unset($_SESSION['its4you_tracy']);

    }

}

if(isset($_REQUEST['tracylog'])){

    if($_REQUEST['tracylog'] == 'start') {

        $_SESSION['its4you_tracylog'] = true;

    } else {

        unset($_SESSION['its4you_tracylog']);

    }

}

include_once 'include/tracy/src/tracy.php';

use Tracy\Debugger;

$tracy_mode = Debugger::PRODUCTION;

if(isset($_SESSION['its4you_tracy'])){

    $tracy_mode = Debugger::DEVELOPMENT;

}

$tracylog_dir = null;

if(isset($_SESSION['its4you_tracylog'])){

    $rootDirectory = vglobal('root_directory');

$tracylog_dir = $rootDirectory.'logs/';

}

Debugger::$logSeverity = E_NOTICE | E_WARNING;

Debugger::enable($tracy_mode,$tracylog_dir);

//----------- END ITS4YOU TRACY IMPLEMENTATION -----------

$webUI = new Vtiger_WebUI();

$webUI->process(new Vtiger_Request($_REQUEST, $_REQUEST));

 

Проверьте, чтобы папка logs была доступна на запись.

 

Как пользоваться.

Вы можете переключать режим между Errors и debugger следующим образом:

чтобы включить режим debugger необходимо добавить в адресную строку ?tracy=start

Для его выключения: ?tracy=stop

Например: index.php?tracy=start

Для переключения в режим Errors:

Добавляем к адресу ?tracylog=start

Отключаем так: ?tracylog=stop

Если библиотека включена, все системные сообщения будут сохранены в файлы error.log / exceptions.log, которые расположены в папке logs.

Popular Posts

My most popular posts

Maximum productivity on remote job
Business

Maximum productivity on remote job

I started my own business and intentionally did my best to work from anywhere in the world. Sometimes I sit with my office with a large 27-inch monitor in my apartment in Cheboksary. Sometimes I’m in the office or in some cafe in another city.

Hello! I am Sergey Emelyanov and I am hardworker
Business PHP

Hello! I am Sergey Emelyanov and I am hardworker

I am a programmer. I am an entrepreneur in my heart. I started making money from the age of 11, in the harsh 90s, handing over glassware to a local store and exchanging it for sweets. I earned so much that was enough for various snacks.

Hire Professional CRM developer for $25 per hour

I will make time for your project. Knowledge of Vtiger CRM, SuiteCRM, Laravel, and Vue.js. I offer cooperation options that will help you take advantage of external experience, optimize costs and reduce risks. Full transparency of all stages of work and accounting for time costs. Pay only development working hours after accepting the task. Accept PayPal and Payoneer payment systems. How to hire professional developer? Just fill in the form

Telegram
@sergeyem
Telephone
+4915211100235