热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Yii日志组件

详细的介绍查看官网的document:http:www.yiiframework.comdocguide1.1entopics.logging也可以看Yii1.1Ap

详细的介绍查看官网的document:http://www.yiiframework.com/doc/guide/1.1/en/topics.logging

也可以看 Yii 1.1 Application Development Cookbook     这本书很好

默认的日志是输出到protected/runtime/application.log 

如果需要修改那么需要在main.php里面增加log配置,如下:

'components' => array( 
        'log'=>array( 
            'class'=>'CLogRouter', 
            'routes'=>array(           

                 array( 
                     'class'=>'CFileLogRoute', 
                     'levels'=>'trace, info, debug, warn, error, fatal, profile', 
                     'categories'=>'test.*', 
                     'maxFileSize'=>1048576,
                     'logFile'=>'test.log', 
                 ), 
                  // 
  
               //                开发过程中所有日志直接输出到浏览器了,这样不需要登录服务器看日志了    

                     
                 array( 
                    'class' => 'CWebLogRoute', 
                    'categories' => 'test.*', 
                    'levels' => CLogger::LEVEL_PROFILE, 
                    'showInFireBug' => true, 
                    'ignoreAjaxInFireBug' => true, 
                ), 
                array( 
                    'class' => 'CWebLogRoute', 
                    'categories' => 'test.* ', 
                ), 

                array( 
                    'class'=>'CEmailLogRoute', 
                    'levels'=>'error, warning', 
                    'emails'=>'admin@example.com', 
                ), 
            ), 
        ), 
  
    ),

如果在某处调用了Yii::log("jdkshgds","info",'test.xx');

这个log首先被记录在了内存中一个CLogger类的array中,然后会逐一的判断每个LogRoute,判断是否需要输出,注意是逐一判断,不是其中一个输出下一个就不管了。

拿上面的配置来说:

第一个CFileLogRoute,'categories'=>'test.*',levels里包含了info, test.xx满足条件,所以会执行,将这条log输出到test.log中。

 

YII中日志的基本使用:

 

可以通过YII提供的Yii::log和Yii::trace进行日志信息的输出

函数定义

 

[php] view plaincopy
  1. public static function trace($msg,$category='application')  
  2.      {  
  3.          if(YII_DEBUG)  
  4.              self::log($msg,CLogger::LEVEL_TRACE,$category);  
  5.      }  
  6.      public static function log($msg,$level=CLogger::LEVEL_INFO,$category='application')  
  7.      {  
  8.          if(self::$_logger===null)  
  9.              self::$_logger=new CLogger;  
  10.          if(YII_DEBUG && YII_TRACE_LEVEL>0 && $level!==CLogger::LEVEL_PROFILE)  
  11.          {  
  12.              $traces=debug_backtrace();  
  13.              $count=0;  
  14.              foreach($traces as $trace)  
  15.              {  
  16.                  if(isset($trace['file'],$trace['line']) && strpos($trace['file'],YII_PATH)!==0)  
  17.                  {  
  18.                      $msg.="\nin ".$trace['file'].' ('.$trace['line'].')';  
  19.                      if(++$count>=YII_TRACE_LEVEL)  
  20.                          break;  
  21.                  }  
  22.              }  
  23.          }  
  24.          self::$_logger->log($msg,$level,$category);  
  25.      }  

 

 日志信息的级别:

[php] view plaincopy
  1. const LEVEL_TRACE='trace';用于调试环境,追踪程序执行流程  
  2. const LEVEL_WARNING='warning';警告信息  
  3. const LEVEL_ERROR='error';致命错误信息  
  4. const LEVEL_INFO='info';普通提示信息  
  5. const LEVEL_PROFILE='profile';性能调试信息  


使用方法:

Yii::log($message, $level, $category); 
Yii::trace($message, $category); 


示例: 
需先在main.php中进行配置,例子选择将日志存储在文件(系统默认为webapp\protected\runtime\application.log)中,为只存储trace和error级别,过滤以orange开始的log。 

Java代码  收藏代码
  1. 'components'=>array(  
  2.      ...............  
  3.      'log'=>array(  
  4.                'class'=>'CLogRouter',  
  5.                'routes'=>array(  
  6.                     array(  
  7.                          'class'=>'CFileLogRoute',  
  8.                          'levels'=>'trace,error',  
  9.                          'categories'=>'orange.*'  
  10.                     ),  
  11.                ),  
  12.           ),  
  13.      ...............  
  14. )  


  
在控制器中定义方法并执行,在此为OrangeController控制器 

  1. public function actionTest(){  
  2.        Yii::log('This is a  trace log','trace','orange.test');  
  3.    }  


执行以后可在日志文件中看到我们的trace信息,为 

    1. 2012/09/28 15:40:11 [trace] [orange.test] This is a  trace log  
    2. in D:\PHP\www\yii\orange\protected\controllers\OrangeController.php (24)  

转:https://www.cnblogs.com/DaBing0806/p/4638210.html



推荐阅读
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有