web-dev-qa-db-ja.com

YIIデバッグ用のログ

多くの場合、Xdebugは、クリックして特定のコード行まで実行する必要があるため、デバッグには適していません。開発者がクラスの特定のプロパティの値をブラウザに出力するために、cakePHPデバッグ関数に似たものを使用したいと思います。

私はYii frameworkを使用していますが、これはyii logmain.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,
        ),
    ),
), 

定義したコントローラーの1つで、このコードをテストしました。

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

ただし、これがFirebugに印刷されているのはわかりません。私はクリスの例を使用しました:

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

7
madi

私はついに解決策を見つけることができました:

私のmain.phpで私はこれをしました:

'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,
        ),
    ),
),

私のコントローラーでは、次のコードを使用しました。

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

アプリケーションログは、以下のすべてのページに表示されます。

10
madi

Debug:trueモードの場合は、protected /main.phpファイルに次の行を追加する必要があります。魅力のような仕事を信頼してください!

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


         ),
            'db' => array(
                'enableProfiling' => true,
                'enableParamLogging' => true,
            ),
        ),
    );
1
Shaig Khaligli

Yii2では

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

カスタマイズされたログクラスの例を以下に示します。

<?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);
    }   
}

例:

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