包 | system.logging |
---|---|
继承 | class CFileLogRoute » CLogRoute » CComponent |
源自 | 1.0 |
版本 | $Id: CFileLogRoute.PHP 3426 2011-10-25 00:01:09Z alexander.makarow $ |
源码 |
CFileLogRoute用文件记录日志信息。
日志文件被存储在 logPath 下 并且文件名可以通过 logFile 指定。 如果日志文件的大小大于maxFileSize(用kilo-bytes), 将进行一次循环 ,这将通过给文件名加前缀‘.1’来重命名当前日志文件。 所有已经存在的日志文件被移动到向后的一个位置, 例如,‘.2’ 到‘.3’,‘.1’,‘到’,‘.2’。 属性 maxLogFiles 指定保持多少个文件.
日志文件被存储在 logPath 下 并且文件名可以通过 logFile 指定。 如果日志文件的大小大于maxFileSize(用kilo-bytes), 将进行一次循环 ,这将通过给文件名加前缀‘.1’来重命名当前日志文件。 所有已经存在的日志文件被移动到向后的一个位置, 例如,‘.2’ 到‘.3’,‘.1’,‘到’,‘.2’。 属性 maxLogFiles 指定保持多少个文件.
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
categories | string | 被逗号或空格分隔的类别列表。默认为空,意味着所有类别。 | CLogRoute |
enabled | boolean | 是否启用这个日志路由。默认为true。 | CLogRoute |
filter | mixed | 附加过滤器 (例如 CLogFilter) 它被应用到日志信息。
这个属性的值被传递到 Yii::createComponent 创建一个日志过滤器对象。
结果,这可能是一个表示过滤器类名的字符串或一个表示过滤器配置的数组。
总之,日志过滤器类应该是 CLogFilter 或它的一个子类。 默认为null,意味着没有过滤器被使用。 |
CLogRoute |
levels | string | 用逗号或空格分隔的等级列表。默认是空,意味着所有等级。 | CLogRoute |
logFile | string | 日志文件名。默认是‘application. | CFileLogRoute |
logPath | string | 存储日志文件目录。默认是应用程序 runtime 路径。 | CFileLogRoute |
logs | array | 到目前为止这个日志路由搜集的日志。 | CLogRoute |
maxFileSize | integer | 最大日志文件尺寸(KB)。默认是1024 (1MB)。 | CFileLogRoute |
maxLogFiles | integer | 轮流的文件数。默认是5。 | 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() | 返回存储日志文件目录。默认是应用程序 runtime 路径。 | CFileLogRoute |
getMaxFileSize() | 返回最大日志文件尺寸(KB)。默认是1024 (1MB)。 | CFileLogRoute |
getMaxLogFiles() | 返回轮流的文件数。默认是5。 | CFileLogRoute |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
init() | 初始化此路由。 | CFileLogRoute |
raiseEvent() | 发起一个事件。 | CComponent |
setLogFile() | 设置日志文件名 | CFileLogRoute |
setLogPath() | 设置存储日志文件目录. | CFileLogRoute |
setMaxFileSize() | 设置日志文件的最大尺寸(KB)。 | CFileLogRoute |
setMaxLogFiles() | 设置用于轮流的文件数。 | CFileLogRoute |
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
formatLogMessage() | 格式化一条日志信息已给定不同字段。 | CLogRoute |
processLogs() | 保存日志信息在文件中。 | CFileLogRoute |
rotateFiles() | 轮流日志文件。 | CFileLogRoute |
属性详细
logFile
属性
public string getLogFile()
public void setLogFile(string $value)
public void setLogFile(string $value)
日志文件名。默认是‘application.log’。
logPath
属性
public string getLogPath()
public void setLogPath(string $value)
public void setLogPath(string $value)
存储日志文件目录。默认是应用程序 runtime 路径。
maxFileSize
属性
public integer getMaxFileSize()
public void setMaxFileSize(integer $value)
public void setMaxFileSize(integer $value)
最大日志文件尺寸(KB)。默认是1024 (1MB)。
maxLogFiles
属性
public integer getMaxLogFiles()
public void setMaxLogFiles(integer $value)
public void setMaxLogFiles(integer $value)
轮流的文件数。默认是5。
方法详细
getLogFile()
方法
public string getLogFile()
| ||
{return} | string | 日志文件名。默认是‘application.log’。 |
public function getLogFile()
{
return $this->_logFile;
}
getLogPath()
方法
public string getLogPath()
| ||
{return} | string | 存储日志文件目录。默认是应用程序 runtime 路径。 |
public function getLogPath()
{
return $this->_logPath;
}
getMaxFileSize()
方法
public integer getMaxFileSize()
| ||
{return} | integer | 最大日志文件尺寸(KB)。默认是1024 (1MB)。 |
public function getMaxFileSize()
{
return $this->_maxFileSize;
}
getMaxLogFiles()
方法
public integer getMaxLogFiles()
| ||
{return} | integer | 轮流的文件数。默认是5。 |
public function getMaxLogFiles()
{
return $this->_maxLogFiles;
}
init()
方法
public void init()
|
public function init()
{
parent::init();
if($this->getLogPath()===null)
$this->setLogPath(Yii::app()->getRuntimePath());
}
初始化此路由。 这个方法被发起在路由管理器创建此路由之后。
processLogs()
方法
protected void processLogs(array $logs)
| ||
$logs | array | 日志信息列表 |
protected function processLogs($logs)
{
$logFile=$this->getLogPath().DIRECTORY_SEPARATOR.$this->getLogFile();
if(@filesize($logFile)>$this->getMaxFileSize()*1024)
$this->rotateFiles();
$fp=@fopen($logFile,'a');
@flock($fp,LOCK_EX);
foreach($logs as $log)
@fwrite($fp,$this->formatLogMessage($log[0],$log[1],$log[2],$log[3]));
@flock($fp,LOCK_UN);
@fclose($fp);
}
保存日志信息在文件中。
rotateFiles()
方法
protected void rotateFiles()
|
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))
@rename($file,$file.'.1'); // suppress errors because it's possible multiple processes enter into this section
}
轮流日志文件。
setLogFile()
方法
public void setLogFile(string $value)
| ||
$value | string | 日志文件名 |
public function setLogFile($value)
{
$this->_logFile=$value;
}
setLogPath()
方法
public void setLogPath(string $value)
| ||
$value | string | 存储日志文件目录. |
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 | 日志文件的最大尺寸(KB)。 |
public function setMaxFileSize($value)
{
if(($this->_maxFileSize=(int)$value)<1)
$this->_maxFileSize=1;
}
setMaxLogFiles()
方法
public void setMaxLogFiles(integer $value)
| ||
$value | integer | 用于轮流的文件数。 |
public function setMaxLogFiles($value)
{
if(($this->_maxLogFiles=(int)$value)<1)
$this->_maxLogFiles=1;
}