2013-07-26 35 views
6

Trong nhiều trường hợp, Xdebug không phù hợp để gỡ lỗi vì nó liên quan đến các lần nhấp để chạy đến một dòng mã cụ thể. Tôi muốn sử dụng một cái gì đó tương tự như cakePHP chức năng gỡ lỗi cho các nhà phát triển để đầu ra giá trị của một tài sản cụ thể của một lớp học cho trình duyệt.YII đăng nhập để gỡ lỗi

Tôi đang sử dụng Yii framework và đây là cấu hình của tôi cho yii log trong main.php:

'log'=>array(
    'class'=>'CLogRouter', 
     'routes'=>array(
     array(
      'class'=>'CFileLogRoute', 
      'levels'=>'trace, info, error, warning, vardump', 
     ), 
     array(
      'class'=>'CWebLogRoute', 
           'enabled' => YII_DEBUG, 
      'levels'=>'error, warning, trace, log, vardump', 
      'showInFireBug'=>true, 
     ), 
    ), 
), 

Trong một bộ điều khiển định nghĩa của tôi, tôi đặt mã này để kiểm tra:

Yii::log("CallFromUserController",'info', 'application'); 

Tuy nhiên tôi không thấy điều này được in trong firebug. Tôi sử dụng ví dụ của Chris:

http://chris-backhouse.com/advanced-logging-in-yii/775

+1

Bạn không có cấp độ 'thông tin' (đó là những gì bạn chỉ định làm đối số thứ hai cho Yii :: log()) được bật cho CWebLogRoute do đó tất nhiên những gì bạn thử sẽ không hoạt động. – kekkis

+0

Ok, tôi cũng đã thử nó nhưng nó không hoạt động. Các giải pháp dưới đây làm việc cho tôi mặc dù :) – madi

Trả lời

10

Cuối cùng tôi quản lý để tìm ra một giải pháp:

Trong main.php của tôi, tôi đã làm điều này:

'log' => array(
    'class' => 'CLogRouter', 
    'routes' => array(
     array(
      'class' => 'CFileLogRoute', 
      'levels' => 'trace, info, error, warning, vardump', 
     ), 
     // uncomment the following to show log messages on web pages 
     array(
      'class' => 'CWebLogRoute', 
      'enabled' => YII_DEBUG, 
      'levels' => 'error, warning, trace, notice', 
      'categories' => 'application', 
      'showInFireBug' => false, 
     ), 
    ), 
), 

Trong bộ điều khiển của tôi, tôi đã sử dụng mã này:

$a = new array(1,2,3); 
Yii::trace(CVarDumper::dumpAsString($a)); 

Nhật ký ứng dụng được hiển thị bên dưới trong mỗi trang.

+0

Làm việc cho tôi +1 – Harikrishnan

1

Trong Yii2

Yii::trace(VarDumper::dumpAsString($array)); 

Một ví dụ về lớp log tùy chỉnh được đưa ra dưới đây.

<?php 

namespace app\helpers; 

use Yii; 
use yii\helpers\VarDumper; 

class Log { 

    const LOG_CATEGORY_NAME = 'myLog'; 

    public static function e($msg, $data) { 

     if (isset($data)) { 
      $msg .= " " . VarDumper::dumpAsString($data); 
     } 
     Yii::error($msg, self::LOG_CATEGORY_NAME); 
    } 
} 

Ví dụ:

Log.e("Copying the Estimate data failed. Model::getError(): ", 
     $model->getErrors()); 
1

Bạn nên thêm dòng sau vào bảo vệ tập tin/main.php của bạn cho debug: Chế độ đúng. Tin tưởng làm việc như một say mê!

return array(
    'preload' => array(
     'debug', 
    ), 
    'components' => array(
     'debug' => array(
      'class' => 'ext.yii2-debug.Yii2Debug', 


     ), 
      'db' => array(
       'enableProfiling' => true, 
       'enableParamLogging' => true, 
      ), 
     ), 
    ); 
Các vấn đề liên quan