第一步:首先在主配置文件config.php文件中设置log
日志路由class:
- CDbLogRoute: 将信息保存到数据库的表中。
- CEmailLogRoute: 发送信息到指定的 Email 地址。
- CFileLogRoute: 保存信息到应用程序 runtime 目录中的一个文件中。
- CWebLogRoute: 将 信息 显示在当前页面的底部。
- CProfileLogRoute: 在页面的底部显示概述(profiling)信息。
分类categories:
可以自定义,但在输出函数里要对应才会被写入日志里
(例如上边写的是 cool.* 和 system.db.* ,就会把相应分类的信息写入日志,请结合下文来理解)
设置完了,就可以用写入日志的函数来记录了:
Yii::trace('My log message.','cool.pd');
//cool.pd属于cool.*分类,所以会被写入日志
Yii::log('My log message.','info','cool.collectpd');
//log定义级别为info,结合上文,第一个logclass会忽略,不会被写入文件,但会被第二个logclass接收,写入日志在网络下方显示。
trace()和log()的区别:
trace()只会在调试模式下生效,即开启debug的时候
trace()不分level,但log()能设置levels参数
自己使用的心得:
1.如果要用Yii::trace()的话,就必须在config.php文件的levels中加入‘trace’级别。此种方式则必须要求在入口文件中定义如下:
---->defined('YII_DEBUG') or define('YII_DEBUG', true);// 此句主要是将debug模式打开,开此种方式将会在application.log文件中打印出大量系统的trace信息。这样势必造成系统运行效率低下 了。如果只想打印出自定义的trace信息,则需要将此句屏蔽掉,而改用Yii::log()方法。
比如定义categories字段为‘xyz.*’,那么使用方法如下:
---->Yii::trace('log message...','xyz.data');//这个跟log的区别在于不需要定义trace级别,注意如果将YII_DEBUG关闭了,则无法打印出此句信息。
2.如果用Yii::log()的话,就最好定义categories字段,并且定义一个自己独有的信息,比如“xyz.*”,然后在用的时候必须如此写法:
----> Yii::log('log message...','info','xyz.data');//这里的info表示trace级别,最后一个参数的‘xyz’必须是在categories中定义的,点后接的可以随便写点什么,只是为了表示它是在xyz下的。