CLogger
| Пакет | system.logging |
|---|---|
| Наследование | класс CLogger » CComponent |
| С версии | 1.0 |
| Исходный код | framework/logging/CLogger.php |
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 | определяет, нужно ли обрабатывать логи немедленно по мере их передачи в маршрут логирования |
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 | общее время обработки текущего запроса. |
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)); |
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 | использование памяти приложением (в байтах). |
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 | результаты профилирования. |
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'). Регистр не учитывается. |
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.
См. также
onFlush() метод (доступен с версии v1.1.0)
public void onFlush(CEvent $event) | ||
| $event | CEvent | параметр события |
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