CLogFilter взбесился...

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

CLogFilter взбесился...

Сообщение Stepan Selyuk »

Думаю в 1.1.3 что-то не доработали,

если в Log Routes указать filter => CLogFilter система перестает учитывать поле level.
Если даже стоит error, записывает info и т.д. ну и если это CEmailLogRoute, то заваливает ящик.
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: CLogFilter взбесился...

Сообщение Stepan Selyuk »

Сам на него и отвечу :) посмотрел ревизии CLogRoute.

rev 1678:

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

public function collectLogs($logger, $processLogs=false)
    {
        $logs=$logger->getLogs($this->levels,$this->categories);
        $this->logs=empty($this->logs) ? $logs : array_merge($this->logs,$logs);
        if($processLogs && !empty($this->logs))
        {
            if($this->filter!==null)
                Yii::createComponent($this->filter)->filter($this->logs);
            $this->processLogs($this->logs);
        }
    }
 
rev 2213:

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

public function collectLogs($logger, $processLogs=false)
    {
        $logs=$logger->getLogs($this->levels,$this->categories);
        $this->logs=empty($this->logs) ? $logs : array_merge($this->logs,$logs);
        if($processLogs)
        {
            if($this->filter!==null)
                Yii::createComponent($this->filter)->filter($this->logs);
            if(!empty($this->logs))
                $this->processLogs($this->logs);
        }
    }
 
В последней ревизии получается, что если фильтр включен, и даже если $logs пустая, то он все равно передает это в фильтр...
В таком случае нужно в CLogFilter в методе filter() проверять логи на пустоту, чего не происходит:

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

    public function filter(&$logs)
    {
        if(($message=$this->getContext())!=='')
            array_unshift($logs,array($message,CLogger::LEVEL_INFO,'application',YII_BEGIN_TIME));
        $this->format($logs);
        return $logs;
    }
 
Пока отключил filter в маршрутах логов.
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CLogFilter взбесился...

Сообщение samdark »

Стоит зарепортить в трекер.
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: CLogFilter взбесился...

Сообщение Stepan Selyuk »

Александр, а в 1.1.4 это было исправлено?
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CLogFilter взбесился...

Сообщение samdark »

В changelog нет. Стоит проверить ещё раз и, если повторится — записать в трекер.
Ответить