Vtiger CRM - как вывести системные сообщения на экран

Vtiger CRM - как вывести системные сообщения на экран

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

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

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.