常用日志方法
Yii::trace()
Yii::error()
Yii::warning()
Yii::info()
Yii::beginProfile()
Yii::endProfile()
日志消息可以是字符串,也可以是复杂的数据,假如一条日志消息不是一个字符串,它将被导出为一个字符串,通过调用 yii\helpers\VarDumper::export()。
建议为每个日志消息指定一个适当的类别,一个简单而高效的命名方案是使用PHP魔术常量 METHOD 作为分类名称。
Yii::trace('start calculating average revenue', _ _METHOD_ _);
日志目标
一个日志目标是一个 [yii\log\Target]类或者它的子类的实例。 它将通过他们的严重层级和类别来过滤日志消息,然后将它们导出到一些媒介中。
在config下的main.php里
'components' => [
'log' => [
'targets' => [
[
'class' => 'yii\log\DbTarget',
'levels' => ['error', 'warning'],
],
[
'class' => 'yii\log\EmailTarget',
'levels' => ['error'],
'categories' => ['yii\db\*'],
'message' => [
'from' => ['[email protected]'],
'to' => ['[email protected]', '[email protected]'],
'subject' => 'Database errors at example.com',
],
],
],
],
],
修改 'levels' => ['error', 'warning'], 以修改记录日志的级别。
取得logger实例,并访问
$loger = \Yii::getLogger();
$loger->log('loglog',\yii\log\Logger::LEVEL_ERROR);
性能分析
性能分析是一个特殊的消息记录类型,它通常用在测量某段代码块的时间, 并且找出性能瓶颈是什么。举个例子,yii\db\Command 类 使用性能分析找出每个数据库查询的时间。
为了使用性能分析,首先确定需要进行分析的代码块。 然后像下面这样围住每个代码块:
\Yii::beginProfile('aaa');
for($i=1;$i<10000;$i++){
sqrt($i);
}
\Yii::endProfile('aaa');
要想把这个日志信息记录到文件里,要记着修改以下内容
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning','profile'],
],
2018-01-03 08:04:20 [127.0.0.1][-][-][profile begin][application] aaa
in HelloController.php:21
2018-01-03 08:04:41 [127.0.0.1][-][-][profile end][application] aaa
in HelloController.php:27