宝哥软件园

详细说明the Yii框架中日志的配置和使用

编辑:宝哥软件园 来源:互联网 时间:2021-09-20

默认情况下,的日志输出到受保护/运行时/应用程序. log。

如果需要修改,需要在main.php组件下添加日志配置,如下所示:

Preload'=array ('log ')。//这句话还必须加上‘components’=array(‘log’=array(‘class’=‘clog router’)。Routes'=array(//这是一个文件。route意味着其类别以test开头的所有类型的输出都将记录在runtime/test.log数组下(' class'=' cfilelogroute ',' levels'=' trace,info,debug,warn,Error,致命,profile ',' categories'=' test。*,' maxfilesize'=1048576,//最大单个文件为1G 'logFile'='test.log ',),////开发过程中的所有日志都直接输出到浏览器。这样就不需要登录服务器读取日志了。数组(' class'=' cweblogroute ',' categories'=' test。*、' levels '=clo gger :3360 level _ profile、' showin firebug'=true、' ignoreAjaxInFireBug'=true、)、array('class'='CWebLogRoute '、' categories'='test。*,),数组(' class '=' CEmailLogRoute ',' levels'='error,Warning ',' emails'=' [email protected]',),),),如果在某处调用yii 33603360 log(' jdkshgds ',' info ',' test . xx ');首先将日志记录在内存中一个CLogger类的数组中,然后逐一判断每个LogRoute,确定是否需要输出。注意是逐个判断,下一个不能输出。

采取以上配置:

第一个CFileLogRoute,“categories”=”测试。*,levels包含info,info,test.xx符合条件,所以会执行。此日志将输出到test.log,然后输出到下一个CWebLogRoute,' levels '=clog ger :3360 level _ profile,这个日志是信息,所以不会被执行。如果下一个CWebLogRoute,categories '='测试。没有指定“*”和级别,这意味着没有过滤,因此也将执行此日志,因此此日志将输出到浏览器。

二、profile功能另外,logger还有一个非常强大的功能:profile。

yii : beginprofile(' blockID ');正在分析的代码块.yii : end profile(' blockID ');这样就可以测试这个代码块的执行效率,非常方便。

更详细的配置视图:http://www.yiiframework.com/doc/api/1.1/CProfileLogRoute.

还有一个非常BUG的特性,分析SQL执行。

在许多情况下,sql语句的糟糕编写会极大地影响效率,但是要确定哪个语句影响效率,需要进行性能分析。YII也提供了这个bug级别的功能。

Iii .使用Yii:log()和Yii:trace()首先在配置文件中设置日志。

log '=array(' class '=' cloglooter ',' routes '=array(' class '=' cfilelogroute ',//这意味着日志输出到一个文件中,详细的' levels'='error,warning ',)。Array ('class'=' cweblogroute ',//表示日志显示在网页底部,详细的' levels'=' trace,info,error,warning ',' categories'=' cool。*,系统。db。*),),),日志路由类:

CDbLogRoute:将信息保存到数据库的一个表中。CEmailLogRoute:将信息发送到指定的电子邮件地址。CFileLogRoute:将信息保存到应用程序运行时目录中的文件中。CWebLogRoute:在当前页面的底部显示信息。CProfileLogRoute:在页面底部显示分析信息。信息级别:

Trace:这是Yii:trace中使用的级别。它用于在开发过程中跟踪程序的执行流程。信息:这用于记录常见信息。配置文件:这是一个性能配置文件。下面将立即给出更详细的解释。警告:这用于警告信息。错误:这用于致命错误信息。分类类别:

可以自定义,但只有对应输出函数才会写入日志(比如用cool写的。*和system.db.*,相应的涉密信息会写入日志,请结合以下内容理解)。

设置后,您可以使用写日志功能来记录:

Yii:trace比赛('我的日志消息',' cool . PD ');//cool.pd属于酷派。*分类,所以会写入日志yii:3360log('我的日志消息'),' info ',' cool . collectpd ');//日志定义级别为info。结合以上内容,第一个logclass将被忽略,不会写入文件,而是由第二个logclass接收,写入的日志将显示在网络下。trace()和log()的区别:trace()只在调试模式下生效,也就是打开调试时,trace()没有级别,但是log()可以设置levels参数。

4.调试sql查询每个语句的执行时间都会在配置中的日志下添加以下路由。

//此配置专门负责数据库操作的profile数组(' class '=' cprofilelogroute ',' levels '=cllogger :3360 level _ profile,' show in firebug'=true,Ignoreajaxinfirebug '=true,' categories'=' system。db。*、//只记录db的操作日志,忽略其他),然后添加:

Yii:beginProfile('db ',' pocket pet ');for($ I=0;$ i1000$ I){ $ user=user model : model()-findByPk(' 1 ');//这只是一个例子,只要是数据库操作} yii: end profile ('db ',' pocket pet ');

要在浏览器中访问此操作,请记住首先打开firebug,然后您可以在firebug中看到下图中的记录:

2015128153707541.jpg  (60083)

同一个查询会分类计算总计和平均值,对分析很有帮助。

也可以将db的日志写入文件,配置如下(不推荐,或者在浏览器中使用firebug比较方便):

Array ('class'=' cfilelogroute ',' levels '=clog ger :3360 level _ profile,' categories'=' system。db。*、//只记录db的操作日志,其他的忽略‘log file’=‘db . log’,),当然。

1.请记住在index.php添加以下配置。

$yii=dirname(__FILE__)。'/./yii/framework/yii . PHP ';$config=dirname(__FILE__)。/protected/config/main . PHP ';已定义(' YII _调试')或已定义(' YII _调试',true);已定义(' YII _调试_显示_探查器')或已定义(' YII _调试_显示_探查器',true);//启用PROFILING defined(' YII _ DEBUG _ PROFILING ')或define('YII_DEBUG_PROFILING ',true);//TRACE LEVEL defined(' YII _ TRACE _ LEVEL ')或define('YII_TRACE_LEVEL ',3);//执行时间已定义(' YII _调试_显示_时间')或已定义(' YII _调试_显示_时间',false);require _ once($ yii);yii : createwebapplication($ config)-run();2.在main.php的主配置文件中,在的组件数据库中将enableProfiling设置为true。

components '=array(' db '=array(' enable profiling '=true,//这用于日志记录,将记录每个语句的执行时间' enablepamlogging'=true,//true表示日志中会记录包括sql语句参数在内的信息,非常详细)。

更多资讯
游戏推荐
更多+