YII Framework框架教程之日志用法详解

论坛 期权论坛 脚本     
niminba   2021-5-23 02:53   849   0

本文实例讲述了YII Framework框架日志用法。分享给大家供大家参考,具体如下:

日志的作用(此处省略1000字)

YII中的日志很好很强大,允许你把日志信息存放到数据库,发送到制定email,存放咋文件中,意见显示页面是,甚至可以用来做性能分析。

YII中日志的基本配置:/yii_dev/testwebap/protected/config/main.php

'log'=>array(
  'class'=>'CLogRouter',
  'routes'=>array(
    array(
      'class'=>'CFileLogRoute',
      'levels'=>'error, warning',
    ),
    // uncomment the following to show log messages on web pages
    /*
    array(
      'class'=>'CWebLogRoute',
    ),
    */
  ),
),

YII中日志的基本使用

可以通过YII提供的Yii::log和Yii::trace进行日志信息的输出,两者的区别看看定义就知道了。

函数定义

public static function trace($msg,$category='application')
{
  if(YII_DEBUG)
    self::log($msg,CLogger::LEVEL_TRACE,$category);
}
public static function log($msg,$level=CLogger::LEVEL_INFO,$category='application')
{
  if(self::$_logger===null)
    self::$_logger=new CLogger;
  if(YII_DEBUG && YII_TRACE_LEVEL>0 && $level!==CLogger::LEVEL_PROFILE)
  {
    $traces=debug_backtrace();
    $count=0;
    foreach($traces as $trace)
    {
      if(isset($trace['file'],$trace['line']) && strpos($trace['file'],YII_PATH)!==0)
      {
        $msg.="\nin ".$trace['file'].' ('.$trace['line'].')';
        if(++$count>=YII_TRACE_LEVEL)
          break;
      }
    }
  }
  self::$_logger->log($msg,$level,$category);
}

$msg:你要输出的日志信息

$category:日志信息所属分类

$level:日志信息的级别:

const LEVEL_TRACE='trace';用于调试环境,追踪程序执行流程
const LEVEL_WARNING='warning';警告信息
const LEVEL_ERROR='error';致命错误信息
const LEVEL_INFO='info';普通提示信息
const LEVEL_PROFILE='profile';性能调试信息

基本使用方法举例

<?php
class DefaultController extends Controller
{
  public function actionCache ()
  {
    $category='system.testmod.defaultController';
    $level=CLogger::LEVEL_INFO;
    $msg='action begin ';
    Yii::log($msg,$level,$category);
  }
}

YII中日志的输出位置

上文提到YII中日志的输出位置可以定义为很多位置。主要通过配置文件修改例如:

'log'=>array(
  'class'=>'CLogRouter',
  'routes'=>array(
    array(
      'class'=>'CFileLogRoute',
      'levels'=>'error, warning',
    ),
    // uncomment the following to show log messages on web pages
    array(
      'class'=>'CWebLogRoute',
    ),
  ),
),

不仅输出到日志文件中,还输出到web页面上。

配置文件中:

routes用于配置日志输出的位置,
class是日志,日志路由的类名
levels是日志的顶级,字符串序列,用都好分割。具体对应CLooger中的常量

注意:

日志文件的存放位置是:/yii_dev/testwebap/protected/runtime/application.log

官方的日志介绍的很详细,但是后半部分中文翻译缺失了,这里进行翻译补全。

Yii 提供了一个灵活可扩展的日志功能。记录的日志 可以通过日志级别和信息分类进行归类。通过使用 级别和分类过滤器,所选的信息还可以进一步路由到 不同的目的地,例如一个文件,Email,浏览器窗口等。

1. 信息记录

信息可以通过 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)信息。

2. 信息路由

通过 Yii::log 或 Yii::trace 记录的信息是保存在内存中的。 我们通常需要将它们显示VFW'G&6R76vRvFFRfR

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP