zoukankan      html  css  js  c++  java
  • yii记录日志信息

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

     1 <?php
     2 
     3 // This is the main Web application configuration. Any writable
     4 // CWebApplication properties can be configured here.
     5 return array(
     6 
     7 // preloading 'log' component
     8 'preload'=>array('log'),
     9 
    10 // application components
    11 'components'=>array(
    12 
    13         'log'=>array(
    14             'class'=>'CLogRouter',
    15             'routes'=>array(
    16                 array(
    17                     'class'=>'CFileLogRoute',
    18                     'levels'=>'info,error, warning',//保存日志信息的级别info代表普通信息
    19                     ),
    20 
    21                 ),
    22             ),
    23         ),
    24 
    25 );

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

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

    1 $yii='C:/yiiframework/yii.php';
    2 // remove the following line when in production mode
    3 defined('YII_DEBUG') or define('YII_DEBUG',true);
    4 
    5 $config=dirname(__FILE__).'/protected/config/main.php';
    6 
    7 require_once($yii);
    8 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)信息。
    • error: 这个用于致命错误(fatal error)信息。

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

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

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

    5. 运行应用,可以看到Yii在protected/runtime 创建了一个application.log

    其内容如下:
    2012/12/11 21:23:38 [info] [site.action] action

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

    转载网址:http://www.imobilebbs.com/wordpress/archives/3882

  • 相关阅读:
    微信开放平台扫码登录回调后 state 参数丢失遗漏的解决方案
    WPF 图片源为空时展示默认图片
    使用批处理(.bat)文件一键编译 .NET CORE 网站并发布至 IIS
    10倍程序员的思考模型
    以TiDB热点问题来谈Region的调度流程
    Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel的解决办法(react Hooks)
    react+tsx+antd表格点击行触发单选复选事件(类型xx上不存在属性xx的解决办法)
    does not exist on type 'JSX.IntrinsicElements'.does not exist on type 'JSX.IntrinsicElements'.的解决办法
    antd-react自定义显示表格操作按钮
    react+tsx+antd关于表单二次弹框
  • 原文地址:https://www.cnblogs.com/jami918/p/3091508.html
Copyright © 2011-2022 走看看