Spec-Zone.ru › Yii 1.1

CLogger

Пакет system.logging
Наследование класс CLogger » CComponent
С версии 1.0
Исходный код framework/logging/CLogger.php
CLogger записывает сообщения журнала в память.

CLogger реализует методы получения сообщений с различными условиями фильтрации, включая уровни и категории журнала.

Общедоступные свойства

Свойство Тип Описание Определено в
autoDump boolean Это свойство будет передано в качестве параметра методу flush() при вызове из log(), когда достигнуто ограничение autoFlush. CLogger
autoFlush integer Сколько сообщений должно быть записано, прежде чем они будут отправлены в пункты назначения. CLogger
executionTime float Возвращает общее время обработки текущего запроса. CLogger
logs array Получает сообщения журнала. CLogger
memoryUsage integer Возвращает использование памяти текущим приложением. CLogger
profilingResults array Возвращает результаты профилирования. CLogger

Общедоступные методы

Метод Описание Определено в
__call() Вызывает метод с указанным именем, который не является методом класса. CComponent
__get() Возвращает значение свойства, список обработчиков событий или поведение по его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в null. CComponent
asa() Возвращает объект поведения с указанным именем. CComponent
attachBehavior() Прикрепляет поведение к этому компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик событий к событию. CComponent
canGetProperty() Определяет, можно ли считать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
detachBehavior() Открепляет поведение от компонента. CComponent
detachBehaviors() Открепляет все поведения от компонента. CComponent
detachEventHandler() Открепляет существующий обработчик событий. CComponent
disableBehavior() Отключает прикреплённое поведение. CComponent
disableBehaviors() Отключает все прикреплённые поведения к этому компоненту. CComponent
enableBehavior() Включает прикреплённое поведение. CComponent
enableBehaviors() Включает все прикреплённые поведения к этому компоненту. CComponent
evaluateExpression() Вычисляет PHP выражение или коллбэк в контексте этого компонента. CComponent
flush() Удаляет все записанные сообщения из памяти. CLogger
getEventHandlers() Возвращает список прикреплённых обработчиков событий для события. CComponent
getExecutionTime() Возвращает общее время обработки текущего запроса. CLogger
getLogs() Получает сообщения журнала. CLogger
getMemoryUsage() Возвращает использование памяти текущим приложением. CLogger
getProfilingResults() Возвращает результаты профилирования. CLogger
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикреплённые обработчики к событию с указанным именем. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
log() Записывает сообщение. CLogger
onFlush() Вызывает событие onFlush. CLogger
raiseEvent() Вызывает событие. CComponent

События

Событие Описание Определено в
onFlush Вызывает событие onFlush . CLogger

Подробности свойств

autoDump свойство (доступно с версии v1.1.8)

public boolean $autoDump;

Это свойство будет передано в качестве параметра методу flush() при вызове из log(), когда достигнуто ограничение autoFlush. По умолчанию, это свойство равно false, что означает, отфильтрованные сообщения сохраняются в памяти каждым маршрутом журнала после вызова flush(). Если это true, отфильтрованные сообщения будут записаны в фактический носитель каждый раз, когда flush() вызывается внутри log().

autoFlush свойство (доступно с версии v1.1.0)

public integer $autoFlush;

сколько сообщений должно быть записано, прежде чем они будут отправлены в пункты назначения. По умолчанию равно 10 000, что означает, что для каждых 10 000 сообщений метод flush будет вызываться автоматически один раз. Если это 0, это означает, что сообщения никогда не будут автоматически очищаться.

executionTime свойство только для чтения

public float getExecutionTime()

Возвращает общее время обработки текущего запроса. Этот метод вычисляет разницу между текущим временем и временной меткой, определенной константой YII_BEGIN_TIME. Для более точной оценки времени выполнения константа должна быть определена как можно раньше (лучше в начале скрипта входа).

logs свойство только для чтения

public array getLogs(string $levels='', array|string $categories=array ( ), array|string $except=array ( ))

Получает журнальные сообщения.

Сообщения могут быть отфильтрованы по уровням и/или категориям журнала. Фильтр уровня задается списком уровней, разделенных запятыми или пробелами (например, «trace, error»). Фильтр категории аналогичен фильтру уровня (например, «system, system.web»). Разница в том, что в фильтре категории можно использовать шаблоны, такие как «system.*», чтобы указать все категории, начинающиеся с «system».

Если вы не укажете фильтр уровня, будут возвращены логи всех уровней. То же самое относится к фильтру категории.

Фильтр уровня и фильтр категории являются комбинированными, т.е. будут возвращены только сообщения, удовлетворяющие обоим условиям фильтра.

memoryUsage свойство только для чтения

public integer getMemoryUsage()

Возвращает использование памяти текущим приложением. Этот метод полагается на функцию PHP memory_get_usage(). Если она недоступна, метод попытается использовать программы ОС для определения использования памяти. Значение 0 будет возвращено, если использование памяти по-прежнему не может быть определено.

profilingResults свойство только для чтения

public array getProfilingResults(string $token=NULL, string $categories=NULL, boolean $refresh=false)

Возвращает результаты профилирования. Результаты могут быть отфильтрованы по токену и/или категории. Если фильтр не указан, возвращаемые результаты будут массивом, где каждый элемент — массив ($токен,$категория,$время). Если фильтр указан, результатом будет массив измерений времени.

Начиная с версии 1.1.11, фильтрация результатов по категории поддерживает тот же формат, что и фильтрация логов в getLogs, и аналогично поддерживает фильтрацию по нескольким категориям и подстановочным символам.

Подробное описание методов

flush() метод (доступен с версии v1.1.0)

public void flush(boolean $dumpLogs=false)
$dumpLogs boolean определяет, нужно ли обрабатывать логи немедленно по мере их передачи в маршрут логирования
Исходный код: framework/logging/CLogger.php#338 (показать)
public function flush($dumpLogs=false)
{
    
$this->onFlush(new CEvent($this, array('dumpLogs'=>$dumpLogs)));
    
$this->_logs=array();
    
$this->_logCount=0;
}

Удаляет все записанные сообщения из памяти. Этот метод вызывает событие onFlush. Присоединённые обработчики событий могут обработать сообщения логов перед их удалением.

getExecutionTime() метод

public float getExecutionTime()
{return} float общее время обработки текущего запроса.
Исходный код: framework/logging/CLogger.php#222 (показать)
public function getExecutionTime()
{
    return 
microtime(true)-YII_BEGIN_TIME;
}

Возвращает общее время обработки текущего запроса. Этот метод вычисляет разницу между текущим временем и меткой времени, определённой константой YII_BEGIN_TIME. Для более точного определения времени выполнения константа должна быть определена как можно раньше (лучше в начале скрипта входа).

getLogs() метод

public array getLogs(string $levels='', array|string $categories=array ( ), array|string $except=array ( ))
$levels string фильтр уровней
$categories array|string фильтр категорий
$except array|string список категорий логов для игнорирования
{return} array список сообщений. Каждый элемент массива представляет одно сообщение со следующей структурой: массив ([0] => сообщение (строка) [1] => уровень (строка) [2] => категория (строка) [3] => метка времени (float, полученная с помощью microtime(true));
Исходный код: framework/logging/CLogger.php#133 (показать)
public function getLogs($levels='',$categories=array(), $except=array())
{
    
$this->_levels=preg_split('/[\s,]+/',strtolower($levels),-1,PREG_SPLIT_NO_EMPTY);

    if (
is_string($categories))
        
$this->_categories=preg_split('/[\s,]+/',strtolower($categories),-1,PREG_SPLIT_NO_EMPTY);
    else
        
$this->_categories=array_filter(array_map('strtolower',$categories));

    if (
is_string($except))
        
$this->_except=preg_split('/[\s,]+/',strtolower($except),-1,PREG_SPLIT_NO_EMPTY);
    else
        
$this->_except=array_filter(array_map('strtolower',$except));

    
$ret=$this->_logs;

    if(!empty(
$levels))
        
$ret=array_values(array_filter($ret,array($this,'filterByLevel')));

    if(!empty(
$this->_categories) || !empty($this->_except))
        
$ret=array_values(array_filter($ret,array($this,'filterByCategory')));

    return 
$ret;
}

Извлекает сообщения логов.

Сообщения могут быть отфильтрованы по уровням и/или категориям логов. Фильтр уровней задаётся списком уровней, разделённых запятыми или пробелами (например, 'trace, error'). Фильтр категорий аналогичен фильтру уровней (например, 'system, system.web'). Различие в том, что в фильтре категорий можно использовать шаблоны, такие как 'system.*', чтобы указать все категории, начинающиеся с 'system'.

Если вы не указываете фильтр уровня, будут возвращены логи всех уровней. То же самое относится к фильтру категорий.

Фильтр уровня и фильтр категории являются комбинированными, то есть будут возвращены только сообщения, удовлетворяющие обоим условиям фильтра.

getMemoryUsage() метод

public integer getMemoryUsage()
{return} integer использование памяти приложением (в байтах).
Исходный код: framework/logging/CLogger.php#235 (показать)
public function getMemoryUsage()
{
    if(
function_exists('memory_get_usage'))
        return 
memory_get_usage();
    else
    {
        
$output=array();
        if(
strncmp(PHP_OS,'WIN',3)===0)
        {
            
exec('tasklist /FI "PID eq ' . getmypid() . '" /FO LIST',$output);
            return isset(
$output[5])?preg_replace('/[\D]/','',$output[5])*1024 : 0;
        }
        else
        {
            
$pid=getmypid();
            
exec("ps -eo%mem,rss,pid | grep $pid", $output);
            
$output=explode("  ",$output[0]);
            return isset(
$output[1]) ? $output[1]*1024 : 0;
        }
    }
}

Возвращает использование памяти текущим приложением. Этот метод полагается на функцию PHP memory_get_usage(). Если она недоступна, метод попытается использовать программы ОС для определения использования памяти. Значение 0 будет возвращено, если использование памяти по-прежнему не может быть определено.

getProfilingResults() метод

public array getProfilingResults(string $token=NULL, string $categories=NULL, boolean $refresh=false)
$token string фильтр токенов. По умолчанию null, что означает, что не фильтруется по токену.
$categories string фильтр категорий. По умолчанию null, что означает, что не фильтруется по категории.
$refresh boolean необходимо ли обновить внутренние вычисления времени. Если false, то измерения времени будут рассчитаны только при первом вызове этого метода.
{return} array результаты профилирования.
Исходный код: framework/logging/CLogger.php#272 (показать)
public function getProfilingResults($token=null,$categories=null,$refresh=false)
{
    if(
$this->_timings===null || $refresh)
        
$this->calculateTimings();
    if(
$token===null && $categories===null)
        return 
$this->_timings;

    
$timings = $this->_timings;
    if(
$categories!==null) {
        
$this->_categories=preg_split('/[\s,]+/',strtolower($categories),-1,PREG_SPLIT_NO_EMPTY);
        
$timings=array_filter($timings,array($this,'filterTimingByCategory'));
    }

    
$results=array();
    foreach(
$timings as $timing)
    {
        if(
$token===null || $timing[0]===$token)
            
$results[]=$timing[2];
    }
    return 
$results;
}

Возвращает результаты профилирования. Результаты могут быть отфильтрованы по токену и/или категории. Если фильтр не указан, возвращаемые результаты будут массивом, где каждый элемент — массив ($токен,$категория,$время). Если фильтр указан, результатом будет массив измерений времени.

Начиная с версии 1.1.11, фильтрация результатов по категории поддерживает тот же формат, что и фильтрация логов в getLogs, и аналогично поддерживает фильтрацию по нескольким категориям и подстановочным символам.

log() метод

public void log(string $message, string $level='info', string $category='application')
$message string сообщение для записи в лог
$level string уровень сообщения (например, 'Trace', 'Warning', 'Error'). Регистр не учитывается.
$category string категория сообщения (например, 'system.web'). Регистр не учитывается.
Исходный код: framework/logging/CLogger.php#94 (показать)
public function log($message,$level='info',$category='application')
{
    
$this->_logs[]=array($message,$level,$category,microtime(true));
    
$this->_logCount++;
    if(
$this->autoFlush>0 && $this->_logCount>=$this->autoFlush && !$this->_processing)
    {
        
$this->_processing=true;
        
$this->flush($this->autoDump);
        
$this->_processing=false;
    }
}

Записывает сообщение в лог. Сообщения, записанные этим методом, могут быть получены обратно с помощью getLogs.

См. также

  • getLogs

onFlush() метод (доступен с версии v1.1.0)

public void onFlush(CEvent $event)
$event CEvent параметр события
Исходный код: framework/logging/CLogger.php#350 (показать)
public function onFlush($event)
{
    
$this->raiseEvent('onFlush', $event);
}

Вызывает событие onFlush.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CLogger

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API