17. Yii 2.0 log组件
2017-09-07 14:51
288 查看
log组件主要用于记录程序运行过程中产生的异常(或错误)或 操作日志。
这里以 Yii 2.0 基础版为例,高级版类似。
Yii 封装的日志类文件位于 /vendor/yiisoft/yii2/log 目录下。
log组件支持的日志介质主要有 DbTarget.php、FileTarget.php、EmailTarget.php和SyslogTarget.php。
这里我们主要介绍前三种,即数据库日志、文件日志和邮件日志。
记录日志的级别,主要有以下几种:
self::LEVEL_ERROR => 'error', // 不可恢复的异常信息
self::LEVEL_WARNING => 'warning', // 程序运行时的警告信息
self::LEVEL_INFO => 'info', // 程序运行时的信息,如:管理员操作
self::LEVEL_TRACE => 'trace', // 调试信息,需要开启 YII_DEBUG 调试模式
self::LEVEL_PROFILE_BEGIN => 'profile begin',
self::LEVEL_PROFILE_END => 'profile end',
1. 文件日志
文件日志的默认保存位置为 /basic/runtime/logs
首先,查看web配置文件 /basic/config/web.php 中的组件配置,可看到日志组件的默认配置如下:
来自CODE的代码片
snippet_file_0.php
其次,在控制器层添加一个控制器文件 LogController.php,进行测试,代码如下:
来自CODE的代码片
snippet_file_0.php
最后,在浏览器中访问 http://basic.com/log/test,就可以看到 /basic/runtime/logs 中的日志文件了。
2. 数据库日志
首先,需要按照 /basic/vendor/yiisoft/yii2/log/migrations/schema-mysql.sql 文件中给出的sql语句,在数据库中创建一个 log 数据表(如果需要表前缀,请自行加上)。
其次,修改web配置文件 /basic/config/web.php 中的组件配置中的log组件,将 'class' => 'yii\log\FileTarget'
改为 'class' => 'yii\log\DbTarget' 即可。
最后,在浏览器中访问 http://basic.com/log/test,就可以在
数据表 log 中看到对应的日志记录了。
3.
邮件日志
使用邮件日志介质,除了要修改log组件外,还必须配置mailer组件。配置方法可参考下面的部分代码。
4. Dispatcher调度器的使用
Dispatcher调度器,又称分配器,利用它的日志组件配置格式,可以将不同级别的日志分配给不同的日志介质来处理,也可以将同一级别的日志分配给多个日志介质处理。
Dispatcher调度器的类文件为/basic/vendor/yiisoft/yii2/log/Dispatcher.php
首先,修改web配置文件 /basic/config/web.php
中的组件配置中的log组件的配置,代码如下:
来自CODE的代码片
snippet_file_0.txt
其次,由于我们使用了邮件日志介质,故我们还必须修改组件配置中的mailer组件的配置,代码如下:
来自CODE的代码片
snippet_file_0.php
最后,在浏览器中访问 http://basic.com/log/test ,测试对应的效果。
这里以 Yii 2.0 基础版为例,高级版类似。
Yii 封装的日志类文件位于 /vendor/yiisoft/yii2/log 目录下。
log组件支持的日志介质主要有 DbTarget.php、FileTarget.php、EmailTarget.php和SyslogTarget.php。
这里我们主要介绍前三种,即数据库日志、文件日志和邮件日志。
记录日志的级别,主要有以下几种:
self::LEVEL_ERROR => 'error', // 不可恢复的异常信息
self::LEVEL_WARNING => 'warning', // 程序运行时的警告信息
self::LEVEL_INFO => 'info', // 程序运行时的信息,如:管理员操作
self::LEVEL_TRACE => 'trace', // 调试信息,需要开启 YII_DEBUG 调试模式
self::LEVEL_PROFILE_BEGIN => 'profile begin',
self::LEVEL_PROFILE_END => 'profile end',
1. 文件日志
文件日志的默认保存位置为 /basic/runtime/logs
首先,查看web配置文件 /basic/config/web.php 中的组件配置,可看到日志组件的默认配置如下:
1 2 3 4 5 6 7 8 9 | 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, // trace级别 'targets' => [ [ 'class' => 'yii\log\FileTarget', // 默认采用文件日志 'levels' => ['error', 'warning'], // 记录日志的级别,记录异常和警告 ], ],], |
来自CODE的代码片
snippet_file_0.php
其次,在控制器层添加一个控制器文件 LogController.php,进行测试,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php namespace app\controllers; use yii\web\Controller; class LogController extends Controller { /** * 测试主动记录日志 */ public function actionTest() { // 这里是人为的调用方法来记录日志,其实当程序运行中出现异常时,会自动记录error日志。 \Yii::warning('这是一个警告'); // 记录日志的各个方法都没有返回值 \Yii::error('这是一个错误', 'app'); // 第二个参数可以指定 category 分类,默认值为 application \Yii::info ( '修改密码', 'operation' ); // 如果想记录info级别的日志,log组件的日志级别需要包含info才行 \Yii::trace('这是一个trace信息'); } } |
来自CODE的代码片
snippet_file_0.php
最后,在浏览器中访问 http://basic.com/log/test,就可以看到 /basic/runtime/logs 中的日志文件了。
2. 数据库日志
首先,需要按照 /basic/vendor/yiisoft/yii2/log/migrations/schema-mysql.sql 文件中给出的sql语句,在数据库中创建一个 log 数据表(如果需要表前缀,请自行加上)。
其次,修改web配置文件 /basic/config/web.php 中的组件配置中的log组件,将 'class' => 'yii\log\FileTarget'
改为 'class' => 'yii\log\DbTarget' 即可。
最后,在浏览器中访问 http://basic.com/log/test,就可以在
数据表 log 中看到对应的日志记录了。
3.
邮件日志
使用邮件日志介质,除了要修改log组件外,还必须配置mailer组件。配置方法可参考下面的部分代码。
4. Dispatcher调度器的使用
Dispatcher调度器,又称分配器,利用它的日志组件配置格式,可以将不同级别的日志分配给不同的日志介质来处理,也可以将同一级别的日志分配给多个日志介质处理。
Dispatcher调度器的类文件为/basic/vendor/yiisoft/yii2/log/Dispatcher.php
首先,修改web配置文件 /basic/config/web.php
中的组件配置中的log组件的配置,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 'log' => [ 'targets' => [ 'file' => [ // 只匹配日志级别levels 'class' => 'yii\log\FileTarget', 'levels' => [ 'trace', 'warning' ], ], 'db' => [ // 同时匹配日志级别levels和分类categories 'class' => 'yii\log\DbTarget', 'levels' => [ 'info' ], 'categories' => [ 'yii\*' , 'operation' ] ], 'email' => [ 'class' => 'yii\log\EmailTarget', 'levels' => [ 'error', 'warning' ], 'message' => [ 'from'=>'junjie.3533@163.com', // 发件人,可采用数组格式 'to' => '******@qq.com', // 收件人,可采用数组格式,发送到多个邮箱 'subject' => 'Yii 2.0 Log', // 邮件主题 ] ] ] ], |
来自CODE的代码片
snippet_file_0.txt
其次,由于我们使用了邮件日志介质,故我们还必须修改组件配置中的mailer组件的配置,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 | 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' => false, // 是否只将邮件日志保存为文件,false表示否,即将邮件日志发送出去 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.163.com', // 邮件服务器地址,邮箱账号需开通对应的服务(如:smtp服务) 'username' => 'junjie.3533', // 邮箱账号 'password' => '******', // 邮箱密码,如果开启了授权码登录第三方邮件客户端,则用授权码 'port' => '25', // 端口 'encryption' => 'tls' ] ], |
来自CODE的代码片
snippet_file_0.php
最后,在浏览器中访问 http://basic.com/log/test ,测试对应的效果。
相关文章推荐
- 17. Yii 2.0 log组件
- Vue 2.0 制作列表组件,实现分页、搜索、批量操作等
- Business Intelligence: Using SQL 2008 Reporting Services and SQL Report Builder 2.0 with Log Parser
- MenuPilot - 非常棒的开源任务菜单组件 For ASP.Net 2.0
- vue2.0组件之间的通信
- yii2.0 Activeform表单部分组件使用方法
- bootstrap-select插件封装成Vue2.0组件
- [js高手之路]Vue2.0基于vue-cli+webpack父子组件通信教程
- entlib2.0研究(五)--缓存组件的设计
- asp.net 2.0中使用OWC组件
- 开始使用 Vuejs 2.0 --- 组件间数据传递
- hadoop2.0报错“There appears to be a gap in the edit log”
- C#2.0全能数据库组件 (通俗易懂)
- 【转载】Asp.NET大文件上传组件开发总结_NET2.0源码下载。
- HreoWinGauge2.0组件集应用示例----旋钮指针(1)
- vue2.0-组件-文档理解笔记v1.0
- 一个简单的组件事件侦听器(Action Script 2.0)
- C#2.0全能数据库组件 (通俗易懂)
- vue1.0和2.0定义和注册组件的写法
- C#+ASP.NET 2.0定制复合组件之高级篇