Yii Framework 开发教程(3) 为应用添加日志

转载 2014年09月02日 16:34:12

在开发应用的过程中,调试也是非常重要的一个环节,除了IDE支持的即时调试(如VS.PHP或IDE支持的调试功能),给Web应用添加适当的调试信息也是非常有用的一个方法,开发过Java或.Net 应用的对log4XX都不陌生,Yii Framework中也提供了类似的Log功能, Yii::log,它是作为CWebApplication一个内置的组件出现的。可以通过配置文件来配置(Yii中配置通常为protected/config/main.php)。

上篇文章Yii Framework 开发简明教程(2) Yii Web应用基础简述了应用组件。

除Log组件外,Yii 预定义了一系列核心应用组件,提供常见 Web 应用中所用的功能。例如, request 组件用于解析用户请求并提供例如 URL,cookie 等信息。 通过配置这些核心组件的属性,我们可以在几乎所有的方面修改Yii 的默认行为。

下面我们列出了由 CWebApplication 预定义的核心组件。

  • assetManagerCAssetManager - 管理私有资源文件的发布。
  • authManagerCAuthManager - 管理基于角色的访问控制 (RBAC).
  • cacheCCache - 提供数据缓存功能。注意,你必须指定实际的类(例如CMemCacheCDbCache)。 否则,当你访问此组件时将返回 NULL。
  • clientScriptCClientScript - 管理客户端脚本 (javascripts 和 CSS).
  • coreMessagesCPhpMessageSource - 提供 Yii 框架用到的核心信息的翻译。
  • dbCDbConnection - 提供数据库连接。注意,使用此组件你必须配置其 connectionString 属性。
  • errorHandlerCErrorHandler - 处理未捕获的 PHP 错误和异常。
  • formatCFormatter - 格式化数值显示。此功能从版本 1.1.0 起开始提供。
  • messagesCPhpMessageSource - 提供Yii应用中使用的信息翻译。
  • requestCHttpRequest - 提供关于用户请求的信息。
  • securityManagerCSecurityManager - 提供安全相关的服务,例如散列,加密。
  • sessionCHttpSession - 提供session相关的功能。
  • statePersisterCStatePersister - 提供全局状态持久方法。
  • urlManagerCUrlManager - 提供 URL 解析和创建相关功能
  • userCWebUser - 提供当前用户的识别信息。
  • themeManagerCThemeManager - 管理主题。这些组件在后面的教程中将逐步介绍。下面给出Log功能使用的基本方法:这里我们修改Yii Framework 开发简明教程(1) 第一个应用Hello World。为其添加日志。

    1. 创建配置文件protected/config/main.php

    希望将日志写到一个文件中,可以使用如下配置:

    <?php

    // This is the main Web application configuration. Any writable // CWebApplication properties can be configured here. return array(

    // preloading 'log' component 'preload'=>array('log'),

    // application components 'components'=>array(

      'log'=>array(    'class'=>'CLogRouter',    'routes'=>array(     array(      'class'=>'CFileLogRoute',      'levels'=>'info,error, warning',      ),

        ),    ),   ),

    );

    CLogRouter 信息路由 通过 Yii::log 或 Yii::trace 记录的信息是保存在内存中的。 我们通常需要将它们显示到浏览器窗口中,或者将他们保存到一些 持久存储例如文件、Email中。这个就叫作 信息路由。
    一般使用Log功能时,需要预先载入Log组件,这是通过preload来配置的,preload 允许应用事先载入一些模块.提示: 默认情况下,应用元件是根据需要而创建的。这意味着一个元件只有在被访问的情况下才会创建。 因此,系统的整体性能不会因为配置了很多元件而下降。有些应用元件,(比如CLogRouter) 是不管用不用都要创建的。在这种情况下, 我们在应用的配置文件里将这些元件的ID列上:preload。

    2. 修改入口脚本index.php ,配置主应用实例使用新创建的配置文件。

    $yii='C:/yiiframework/yii.php'; // remove the following line when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true);

    $config=dirname(__FILE__).'/protected/config/main.php';

    require_once($yii); Yii::createWebApplication($config)->run();

    3. 创建protected/runtime因为日志文件写入的缺省目录为protected/runtime 所以事先要创建好runtime 目录,否则Yii 将日志直接显示在网页上。

    4. 这样就可以使用 Yii::log 或 Yii::trace 为应用添加日志。

    其 区别是后者只在当应用程序运行在 调试模式(debug mode) 中时才会记录信息。


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


    当记录信息时,我们需要指定它的分类和级别 分类是一段格式类似于 路径别名 的字符串。 例如,如果一条信息是在 CController 中记录的,我们可以使用 
    system.web.CController
     作为分类。信息级别应该是下列值中的一种:


    trace
    : 这是在 Yii::trace 中使用的级别。它用于在开发中 跟踪程序的执行流程。
    info
    : 这个用于记录普通的信息。
    profile
    : 这个是性能概述(profile)。下面马上会有更详细的说明。
    warning
    : 这个用于警告(warning)信息。

    Yii::log($message, CLogger::LEVEL_WARNING, 'system.web.CHttpSession');
    error

    : 这个用于致命错误(fatal error)信息。

    Yii 的日志通过Level和Category进行分类和过滤,正如我们所提到的, 多个级别或分类应使用逗号连接。
    由于信息分类是类似 xxx.yyy.zzz 格式的,我们可以将其视为一个分类层级。 具体地,我们说 xxx 是 xxx.yyy 的父级,而xxx.yyy 又是 xxx.yyy.zzz 的父级。 这样我们就可以使用 xxx.* 表示分类 xxx 及其所有的子级和孙级分类。

    有了以上知识,我们修改SiteController的actionIndex,添加一行日志。

    public function actionIndex() {  Yii::log("action","info","site.action");  $this->render("index"); }

    5. 运行应用,可以看到Yii在protected/runtime 创建了一个application.log
    Yii Framework 开发教程(3) 为应用添加日志 - 凌晨四点半 - 凌晨四点半
  • 其内容如下:
    2012/12/11 21:23:38 [info] [site.action] action

    注: 日志存放的位置和文件名都可以通过配置来修改,一般情况使用缺省值就可以了,和log4X 类似,应用的日志可以通过路由同时写到多个目的地(文件,Email等)这些多可以通过配置来实现,具体可以参见日志记录

    转载:http://weixueliang89.blog.163.com/blog/static/1979217742013617105130676/

Yii Framework 开发教程(3) 为应用添加日志

在开发应用的过程中,调试也是非常重要的一个环节,除了IDE支持的即时调试(如VS.PHP或IDE支持的调试功能),给Web应用添加适当的调试信息也是非常有用的一个方法,开发过Java或.Net 应用的...

Yii Framework 开发教程(3) 为应用添加日志

 在开发应用的过程中,调试也是非常重要的一个环节,除了IDE支持的即时调试(如VS.PHP或IDE支持的调试功能),给Web应用添加适当的调试信息也是非常有用的一个方法,开发过Java或.N...

Yii Framework 开发教程(3) 为应用添加日志

在开发应用的过程中,调试也是非常重要的一个环节,除了IDE支持的即时调试(如VS.PHP或IDE支持的调试功能),给Web应用添加适当的调试信息也是非常有用的一个方法,开发过Java或.Net 应用的...

Yii Framework2.0开发教程(3)数据库mysql入门

Yii Framework开发教程(3)数据库mysql入门

Yii Framework2.0开发教程(1)配置环境及第一个应用HelloWorld

Yii Framework开发教程(1)配置运行环境及第一个应用HelloWorld

Yii Framework 开发教程(23) 数据库-概述

Yii提供了强大的数据库编程支持。Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS)。使用Yii的DA...

Yii Framework 开发教程(24) 数据库-DAO 示例

 数据访问对象(DAO) 对访问存储在不同数据库管理系统(DBMS)中的数据提供了一个通用的API。 因此,在将底层 DBMS 更换为另一个时,无需修改使用了 DAO 访问数据的代码。 ...

Yii Framework 开发教程 UI 小组件Widget 概述

和通常的应用程序开发框架一样,Yii Framework也提供了一组UI小组件(CWidget)来帮助程序员设计用户界面,小组是 CWidget 或其子类的实例.它是一个主要用于表现数据的组件.小组通...

Yii Framework2.0开发教程(6)数据库mysql--ActiveRecord

Active Record(活动记录,以下简称AR)提供了一个面向对象的接口,用以访问数据库中的数据...

Yii Framework 开发教程(10) UI 组件 自定义组件

 在介绍Yii内置UI组件之前,先介绍一下如何自定义组件,这样也有助于理解CWidget的用法, 自定义组件就是重载 CWidget的init() 和 run() 方法。 [ph...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Yii Framework 开发教程(3) 为应用添加日志
举报原因:
原因补充:

(最多只允许输入30个字)