详细的介绍查看官网的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进行日志信息的输出

函数定义

  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. }

日志信息的级别:

  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。

  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)
 

Yii 日志组件的更多相关文章

  1. (转)Yii的组件机制之一:组件基础类CComponent分析

    Yii的组件机制 组件机制,是Yii整个体系的思想精髓,在使用Yii之前,最应该先了解其组件机制,如果不了解这个机制,那么阅读Yii源代码会非常吃力.组件机制给Yii框架赋予了无穷的灵活性和可扩展性, ...

  2. yii日志保存机制

    一.修改yii框架的配置文件(main.php) 'log' => array( 'class' => 'CLogRouter', 'routes' => array( array( ...

  3. .NetCore中的日志(1)日志组件解析

    .NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...

  4. C#组件系列———又一款日志组件:Elmah的学习和分享

    前言:好久没动笔了,都有点生疏,12月都要接近尾声,可是这月连一篇的产出都没有,不能坏了“规矩”,今天还是来写一篇.最近个把月确实很忙,不过每天早上还是会抽空来园子里逛逛.一如既往,园子里每年这个时候 ...

  5. java日志组件介绍(common-logging,log4j,slf4j,logback )

    转自:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging是apache提供的一个通用的日志 ...

  6. 你的日志组件记录够清晰嘛?--自己开发日志组件 Logger

    现在现成的日志组件实在是太多太多,为什么我还需要自己实现呢????? 需求来源于java的log4j, [07-31 16:40:00:557:WARN : com.game.engine.threa ...

  7. 我心中的核心组件(可插拔的AOP)~第十五回 我的日志组件Logger.Core(策略,模版方法,工厂,单例等模式的使用)

    回到目录 之前的讲过两篇关于日志组件的文章,分别是<第一回  日志记录组件之自主的Vlog>和<第三回  日志记录组件之log4net>,而今天主要说一下我自己开发的另一种日志 ...

  8. 快速入门系列--Log4net日志组件

    Log4net是阿帕奇基金会的非常流行的开源日志组件,是log4j的.NET移植版本,至今已经有11年的历史,使用方便并且非常稳定,此外很重要的一点是其和很多开源组件能很好的组合在一起工作,例如NHi ...

  9. Node 进阶:express 默认日志组件 morgan 从入门使用到源码剖析

    本文摘录自个人总结<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 章节概览 morgan是express默认的日志中间件, ...

随机推荐

  1. Codeforces 639B——Bear and Forgotten Tree 3——————【构造、树】

    Bear and Forgotten Tree 3 time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  2. [转]NLog 自定义字段 写入 oracle

    本文转自:http://www.cnblogs.com/skyapplezhao/p/5690695.html 1.通过Nuget安装NLog 下载,简单入门 请参照 我刚才转的几篇文章,下面我直接贴 ...

  3. [转]weui-wxss WeUI for 小程序 为微信小程序量身设计

    本文转自:https://github.com/weui/weui-wxss/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=tou ...

  4. Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)

    正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Blend下能够设计出很多满意的动画作品,或许他具体是怎么实现的,通过什么方式实现的我们还是一无所知.本篇将续前面几篇基础动画之上,详细 ...

  5. javaweb之jsp的九个隐含对象与基本语法

    1.在页面上可以不用声明直接使用的对象称为jsp页面的隐含对象.使用<% %>编写的java代码在_jspService方法中,如下: public void _jspService(fi ...

  6. Java 集合类常用方法

    Collection中的contains()方法和remove()方法. boolean contains(Object o);该方法是用来判断集合中是否包含某个元素,若包含,返回true,不包含返回 ...

  7. Tomcat Post请求大小限制

    理论上讲,POST是没有大小限制的.HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力. 如:在Tomcat下取消POST大小的限制(Tomcat默认2M): 打开tomca ...

  8. json_decode($json, true) true什么意思

    <?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}' ...

  9. es6 class类实例、静态、私有方法属性笔记

    实例属性.方法 class Foo { valueA = 100 //第一种实例属性定义,位置:new的实例上 constructor() { this.valueB = 200 //第二种实例属性定 ...

  10. 基础架构之Gitlab Runner

    基础架构之Gitlab Runner也是常用的基础设施,我们接着GitLab操作,具体使用GitlabRunner,如果不熟悉可以见官方详细介绍https://docs.gitlab.com/runn ...