DebugTarget Yii 2.0

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
tar_m
Сообщения: 140
Зарегистрирован: 2012.12.26, 07:37

DebugTarget Yii 2.0

Сообщение tar_m »

Слил последние изменения с гитхаба, начал смотреть что нового, решил подтянуть дебуг тул бар
Долго мучался и не мог понять почему логгер не записывает в файлы
Наконец дошел до условия

if (\Yii::$app->getModule('debug', FALSE) !== null) {
return;
}
В файле Yii\logging\DebugTarget

Получается что если модули уже подгрузились то он не будет участвовать в записи логов, непонятно чем это обоснованно, но получается что если я в автолоаде опрашиваю все модули то дебага мне не видать
не убрав эти строки
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: DebugTarget Yii 2.0

Сообщение samdark »

Тулбар ещё не готов.
tar_m
Сообщения: 140
Зарегистрирован: 2012.12.26, 07:37

Re: DebugTarget Yii 2.0

Сообщение tar_m »

Ну просто как факт, на тестовом приложении (bootstrap) его можно подключить и он полетит без проблем.
Попытавшись сделать тоже самое уже на своем приложении встретился с подобной проблемой.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: DebugTarget Yii 2.0

Сообщение samdark »

М... а как это воспроизвести?
tar_m
Сообщения: 140
Зарегистрирован: 2012.12.26, 07:37

Re: DebugTarget Yii 2.0

Сообщение tar_m »

Вот простой компонент который убивает тул бар если его поставить в прелоад

Код: Выделить всё

<?php

namespace app;

use Yii\Base\Component;

use Exception;

class Loader extends Component
{
    
    /**
     * @var local var inlcuded module object array
     * @access private
     * */
    private $_modules;
    
    /**
     * @var access entity array
     * @access private 
     * */
    private $_accessEntity;
    
    /**
     * Init at autoload
     * 
     * @access public
     * @return void
     * */
    public function init()
    {
       $modulesHeaders = \Yii::$app -> getModules();
        foreach ($modulesHeaders as $moduleName => $modulePath)
        {
            $thisModule = \Yii::$app -> getModule($moduleName);
            $this -> _modules[$moduleName] = $thisModule;
        }
    }
}
/* file  */
/* End of file */

Но что самое забавное что он и просто лог не писал
то есть при конфиге
"<------><------>'log' => array(
<------><------><------>'class' => 'yii\logging\Router',
<------><------><------>'targets' => array(
<------><------><------><------>array(
<------><------><------><------><------>'class' => 'yii\logging\FileTarget',
<------><------><------><------><------>'levels' => array('error', 'warning'),
<------><------><------><------>),
<------><------><------><------>array(
<------><------><------><------><------>'class' => 'yii\logging\DebugTarget',
<------><------><------><------>)
<------><------><------>),
<------><------>),"

Он создавал папку log в папке runtime но не записывал туда лог
Поидее как я понимаю строчка которая относится к DebugTarget должна влиять на запись только этого логгера но это приводит к тому что и простой лог тоже не пишется
Сейчас воспроизвел все с нуля на бут страпе, все так и есть, дебуг тул бар отваливается и логи не пишутся

Хотя с логом может и просто совпадение
tar_m
Сообщения: 140
Зарегистрирован: 2012.12.26, 07:37

Re: DebugTarget Yii 2.0

Сообщение tar_m »

Да так и есть, просто совпадение, лог в файл в папке log штатно пишется
Остальное остается в силе
Ответить