yii migrate --migrationPath=@yii/log/migrations
当然categories我们也可以指定为YII的类
'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', //日志记录的级别,这里演示设为info 'levels' => ['info'], //定义分类 'categories' => ['yii\db\*'], ], ], ],
然后我们操作一下数据库,看是否日志记录了。
<?php namespace app\controllers; use YII; use yii\db\Query; use yii\web\Controller; class TestController extends Controller { public function actionTest() { $data = (new Query())->from('{{%user}}') ->where('id=:id', [':id' => '1']) ->all(); var_dump($data); } }
日志消息的格式化,我们可以自定义日志的前缀。
'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', 'levels' => ['error', 'warning'], //定义分类 'categories' => ['db'], //定义前缀 'prefix' => function($message) { $uid = !empty(YII::$app->user->id) ? YII::$app->user->id : '-'; $mid = !empty(YII::$app->module->id) ? YII::$app->module->id : '-'; $cid = !empty(YII::$app->controller->id) ? YII::$app->controller->id : '-'; $aid = !empty(YII::$app->controller->action->id) ? YII::$app->controller->action->id : '-'; return "[{$uid}][{$mid}/{$cid}/{$aid}]"; }, ], ], ],
使用如下代码,记录日志,查看效果
YII::warning('我是警告!!!', 'db'); YII::error('我是错误!!!', 'db');
由于没有登陆和分模块,所以没获取到用户ID和模块ID,不过控制器ID和方法ID都获取到了。
消息的刷新和导出
'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, //消息被存放在一个数组里,积累到一定数量,才会被刷新到日志target //通过flushInterval设置消息刷新到日志target的数量 'flushInterval' => 100, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', //当消息刷新到日志对象时,并不会立即导出,只有累积到一定数量才会导出 //通过exportInterval来设置这个导出数量 'exportInterval' => 100, 'levels' => ['error', 'warning'], //定义分类 'categories' => ['db'], ], ], ],
内容版权声明:除非注明,否则皆为本站原创文章。