CFileLogRoute
| Пакет | system.logging |
|---|---|
| Наследование | class CFileLogRoute » CLogRoute » CComponent |
| С момента | 1.0 |
| Исходный код | framework/logging/CFileLogRoute.php |
CFileLogRoute записывает сообщения журнала в файлы.
Файлы журнала хранятся в папке logPath, а имя файла задается свойством logFile. Если размер файла журнала превышает maxFileSize (в килобайтах), выполняется ротация, которая переименовывает текущий файл журнала, добавляя к имени суффикс '.1'. Все существующие файлы журнала перемещаются назад на одну позицию, т.е. '.2' в '.3', '.1' в '.2'. Свойство maxLogFiles определяет, сколько файлов нужно сохранить. Если свойство rotateByCopy равно true, основной файл журнала будет ротироваться путем копирования и обрезки (для большей совместимости с просмотрщиками логов), в противном случае он будет ротироваться путем переименования.
Файлы журнала хранятся в папке logPath, а имя файла задается свойством logFile. Если размер файла журнала превышает maxFileSize (в килобайтах), выполняется ротация, которая переименовывает текущий файл журнала, добавляя к имени суффикс '.1'. Все существующие файлы журнала перемещаются назад на одну позицию, т.е. '.2' в '.3', '.1' в '.2'. Свойство maxLogFiles определяет, сколько файлов нужно сохранить. Если свойство rotateByCopy равно true, основной файл журнала будет ротироваться путем копирования и обрезки (для большей совместимости с просмотрщиками логов), в противном случае он будет ротироваться путем переименования.
Свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| categories | mixed | массив категорий или список категорий, разделенных запятыми или пробелами. | CLogRoute |
| enabled | boolean | включить ли этот маршрут логов. | CLogRoute |
| except | mixed | массив категорий или список категорий, разделенных запятыми или пробелами, которые следует ИСКЛЮЧИТЬ из логов. | CLogRoute |
| filter | mixed | дополнительный фильтр (например, CLogFilter), который можно применить к сообщениям журнала. | CLogRoute |
| levels | string | список уровней, разделенных запятыми или пробелами. | CLogRoute |
| logFile | string | имя файла журнала. | CFileLogRoute |
| logPath | string | каталог для хранения файлов журнала. | CFileLogRoute |
| logs | array | журналы, собранные до сих пор этим маршрутом логов. | CLogRoute |
| maxFileSize | integer | максимальный размер файла журнала в килобайтах (КБ). | CFileLogRoute |
| maxLogFiles | integer | количество файлов, используемых для ротации. | CFileLogRoute |
| rotateByCopy | boolean | Выполнять ли ротацию основного файла журнала путем копирования и обрезки, что более совместимо с просмотрщиками логов. | CFileLogRoute |
Публичные методы
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает метод, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение по его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| asa() | Возвращает объект поведения по имени. | CComponent |
| attachBehavior() | Присоединяет поведение к компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, можно ли считать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| collectLogs() | Извлекает отфильтрованные сообщения журнала из логгера для дальнейшей обработки. | CLogRoute |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает присоединенное поведение. | CComponent |
| disableBehaviors() | Отключает все присоединенные поведения к данному компоненту. | CComponent |
| enableBehavior() | Включает присоединенное поведение. | CComponent |
| enableBehaviors() | Включает все присоединенные к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| getEventHandlers() | Возвращает список присоединенных обработчиков событий для события. | CComponent |
| getLogFile() | Возвращает имя файла журнала. По умолчанию «application.log». | CFileLogRoute |
| getLogPath() | Возвращает каталог для хранения файлов журнала. По умолчанию путь к приложению. | CFileLogRoute |
| getMaxFileSize() | Возвращает максимальный размер файла журнала в килобайтах (КБ). По умолчанию 1024 (1 МБ). | CFileLogRoute |
| getMaxLogFiles() | Возвращает количество файлов, используемых для ротации. По умолчанию 5. | CFileLogRoute |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединенные обработчики к указанному событию. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| init() | Инициализирует маршрут. | CFileLogRoute |
| raiseEvent() | Вызывает событие. | CComponent |
| setLogFile() | Устанавливает имя файла журнала. | CFileLogRoute |
| setLogPath() | Устанавливает каталог для хранения файлов журнала. | CFileLogRoute |
| setMaxFileSize() | Устанавливает максимальный размер файла журнала в килобайтах (КБ). | CFileLogRoute |
| setMaxLogFiles() | Устанавливает количество файлов, используемых для ротации. | CFileLogRoute |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| formatLogMessage() | Форматирует сообщение журнала с различными полями. | CLogRoute |
| processLogs() | Сохраняет сообщения журнала в файлы. | CFileLogRoute |
| rotateFiles() | Производит ротацию файлов журнала. | CFileLogRoute |
Подробности свойств
logFile свойство
public string getLogFile()
public void setLogFile(string $value)
Имя файла журнала. По умолчанию 'application.log'.
logPath свойство
public string getLogPath()
public void setLogPath(string $value)
Директория для хранения файлов журнала. По умолчанию — путь к приложению.
maxFileSize свойство
public integer getMaxFileSize()
public void setMaxFileSize(integer $value)
Максимальный размер файла журнала в килобайтах (КБ). По умолчанию 1024 (1 МБ).
maxLogFiles свойство
public integer getMaxLogFiles()
public void setMaxLogFiles(integer $value)
Количество файлов, используемых для ротации. По умолчанию 5.
rotateByCopy свойство (доступно с версии v1.1.14)
public boolean $rotateByCopy;
Выполнять ротацию основного лога копированием и обнулением, что совместимо с программами отображения логов. По умолчанию false.
Подробности методов
getLogFile() метод
public string getLogFile() | ||
| {return} | string | Имя файла журнала. По умолчанию 'application.log'. |
Исходный код: framework/logging/CFileLogRoute.php#93 (показать)
public function getLogFile()
{
return $this->_logFile;
}
getLogPath() метод
public string getLogPath() | ||
| {return} | string | Директория для хранения файлов журнала. По умолчанию — путь к приложению. |
Исходный код: framework/logging/CFileLogRoute.php#73 (показать)
public function getLogPath()
{
return $this->_logPath;
}
getMaxFileSize() метод
public integer getMaxFileSize() | ||
| {return} | integer | Максимальный размер файла журнала в килобайтах (КБ). По умолчанию 1024 (1 МБ). |
Исходный код: framework/logging/CFileLogRoute.php#109 (показать)
public function getMaxFileSize()
{
return $this->_maxFileSize;
}
getMaxLogFiles() метод
public integer getMaxLogFiles() | ||
| {return} | integer | Количество файлов, используемых для ротации. По умолчанию 5. |
Исходный код: framework/logging/CFileLogRoute.php#126 (показать)
public function getMaxLogFiles()
{
return $this->_maxLogFiles;
}
init() метод
public void init() |
Исходный код: framework/logging/CFileLogRoute.php#63 (показать)
public function init()
{
parent::init();
if($this->getLogPath()===null)
$this->setLogPath(Yii::app()->getRuntimePath());
}
Инициализирует маршрут. Этот метод вызывается после создания маршрута менеджером маршрутов.
processLogs() метод
protected void processLogs(array $logs) | ||
| $logs | array | список сообщений журнала |
Исходный код: framework/logging/CFileLogRoute.php#144 (показать)
protected function processLogs($logs)
{
$text='';
foreach($logs as $log)
$text.=$this->formatLogMessage($log[0],$log[1],$log[2],$log[3]);
$logFile=$this->getLogPath().DIRECTORY_SEPARATOR.$this->getLogFile();
$fp=@fopen($logFile,'a');
@flock($fp,LOCK_EX);
if(@filesize($logFile)>$this->getMaxFileSize()*1024)
{
$this->rotateFiles();
@flock($fp,LOCK_UN);
@fclose($fp);
@file_put_contents($logFile,$text,FILE_APPEND|LOCK_EX);
}
else
{
@fwrite($fp,$text);
@flock($fp,LOCK_UN);
@fclose($fp);
}
}
Сохраняет сообщения журнала в файлы.
rotateFiles() метод
protected void rotateFiles() |
Исходный код: framework/logging/CFileLogRoute.php#171 (показать)
protected function rotateFiles()
{
$file=$this->getLogPath().DIRECTORY_SEPARATOR.$this->getLogFile();
$max=$this->getMaxLogFiles();
for($i=$max;$i>0;--$i)
{
$rotateFile=$file.'.'.$i;
if(is_file($rotateFile))
{
// suppress errors because it's possible multiple processes enter into this section
if($i===$max)
@unlink($rotateFile);
else
@rename($rotateFile,$file.'.'.($i+1));
}
}
if(is_file($file))
{
// suppress errors because it's possible multiple processes enter into this section
if($this->rotateByCopy)
{
@copy($file,$file.'.1');
if($fp=@fopen($file,'a'))
{
@ftruncate($fp,0);
@fclose($fp);
}
}
else
@rename($file,$file.'.1');
}
// clear stat cache after moving files so later file size check is not cached
clearstatcache();
}
Производит ротацию файлов журнала.
setLogFile() метод
public void setLogFile(string $value) | ||
| $value | string | Имя файла журнала |
Исходный код: framework/logging/CFileLogRoute.php#101 (показать)
public function setLogFile($value)
{
$this->_logFile=$value;
}
setLogPath() метод
public void setLogPath(string $value) | ||
| $value | string | Директория для хранения файлов журналов. |
Исходный код: framework/logging/CFileLogRoute.php#82 (показать)
public function setLogPath($value)
{
$this->_logPath=realpath($value);
if($this->_logPath===false || !is_dir($this->_logPath) || !is_writable($this->_logPath))
throw new CException(Yii::t('yii','CFileLogRoute.logPath "{path}" does not point to a valid directory. Make sure the directory exists and is writable by the Web server process.',
array('{path}'=>$value)));
}
setMaxFileSize() метод
public void setMaxFileSize(integer $value) | ||
| $value | integer | Максимальный размер файла журнала в килобайтах (КБ). |
Исходный код: framework/logging/CFileLogRoute.php#117 (показать)
public function setMaxFileSize($value)
{
if(($this->_maxFileSize=(int)$value)<1)
$this->_maxFileSize=1;
}
setMaxLogFiles() метод
public void setMaxLogFiles(integer $value) | ||
| $value | integer | Количество файлов для ротации. |
Исходный код: framework/logging/CFileLogRoute.php#134 (показать)
public function setMaxLogFiles($value)
{
if(($this->_maxLogFiles=(int)$value)<1)
$this->_maxLogFiles=1;
}
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CFileLogRoute