详细的介绍查看官网的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. java.lang.RuntimeException Unable to instantiate application Caused by: java

    参考:http://blog.csdn.net/xufazhong/article/details/71155528 dependencies { classpath 'com.android.too ...

  2. gulp入门详情

    gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码,而且大 ...

  3. WP手机短信导出方法和MSG格式文件阅读器的实现

    最近想起来自己一直扔在抽屉里的Nokia920T里还存着珍贵的短信,觉得把它导出来存到电脑上比较稳妥也方便阅读.经过搜索找到一下方法:到应用市场里搜索contacts+message backup,安 ...

  4. Java生成验证码(二)

    前一篇博客已经介绍了如何用Java servlet产生验证码,本篇继续介绍如何使用一些开源组件生成验证码 ————————————————————————————————————————————   ...

  5. ExceptionHelper异常工具类

    using System;using System.Collections.Generic;using System.Text; namespace JiaWel.Utilities{ public ...

  6. 解决vue移动端适配问题

    1,先看看网上关于移动端适配讲解 再聊移动端页面适配,rem和vw适配方案! 基础点:rem相对根节点字体的大小.所以不用px; 根字体:字体的大小px; px:你就当成cm(厘米)这样的东西吧: 基 ...

  7. 新项目放到jenkins步骤

      1配置playbook.xml,src和dest需要和运维确认 2项目内config 文件夹下index文件内,build对象内assetsPublicPath属性是否需要更改.   playbo ...

  8. 关于 ie9 不执行 js 的问题

    当写js用 console.log()调试,但没有注释,在ie 9 浏览器上运行时,console.log()  后面的脚本不能再执行了. 为了ie,记得把console.log() 注释

  9. Python基础-map/reduce/filter

    一.map Python内置函数,用法及说明如下: class map(object): """ map(func, *iterables) --> map obj ...

  10. Apache服务器运维笔记(4)----服务器扩展部分

    在Apache的默认配置文件夹中有一个 extra 目录,这个目录是用来存放 Apache 其他模块的配置文件的.这些文件是 Apache 针对常用的模块而设置并提供的,它们都是通过 Include ...