本文实例讲述了YII2框架中日志的配置与使用方法。分享给大家供大家参考,具体如下:
YII2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用。
我们在config/web.php中配置如下:
return [ //log必须在bootstrap期间就被加载,便于及时调度日志消息到目标 'bootstrap' => ['log'], 'components' => [ 'log' => [ //消息跟踪级别,设置yii\log\Dispatcher::traceLevel属性 //YII_DEBUG开启时,日志消息被记录时,追加最多3个调用堆栈信息 'traceLevel' => YII_DEBUG ? 3 : 0, //日志目标,可定义多个 'targets' => [ [ //日志处理器类 'class' => 'yii\log\FileTarget', //日志记录的级别 'levels' => ['error', 'warning'], //定义日志文件 'logFile' => '@runtime/logs/test.log', ], ], ], ], ];
通过下面5个方法,来写入我们自已的日志
//跟踪 Yii::trace('我是一条跟踪'); //消息 YII::info('我是一条消息'); //调试 YII::debug('我是一条调试'); //警告 YII::warning('我是一条警告'); //错误 YII::error('我是一条错误');
注意我们上面定义日志的levels为['error', 'warning'],所以日志只会记录这两个级别的信息。
有些时候我们并不希望把所有日志写在一起,我们会根据不同模块来写日志,这样以便区分,这就需要用到日志的分类了。
重新配置config/web.php如下:
'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', //日志记录的级别 'levels' => ['error', 'warning'], //追加上下文信息,默认YII会包含PHP全局变量,这里我们不需要,设为空。 'logVars' => [], //定义分类 'categories' => ['db'], ], [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', //日志记录的级别 'levels' => ['error', 'warning'], //追加上下文信息,默认YII会包含PHP全局变量,这里我们不需要,设为空。 'logVars' => [], //定义分类 'categories' => ['pay'], ], ], ],
通过如下方法,添加我们的日志
//警告 YII::warning('我是一条数据库警告', 'db'); //错误 YII::error('我是一条数据库错误', 'db'); //警告 YII::warning('我是一条支付警告', 'pay'); //错误 YII::error('我是一条支付错误', 'pay');
由于上面的配置我们使用了DbTarget,我们还需要添加一张日志表,用于记录我们的日志,进入项目目录。运行如下命令: