多くの場合、Xdebug
は、クリックして特定のコード行まで実行する必要があるため、デバッグには適していません。開発者がクラスの特定のプロパティの値をブラウザに出力するために、cakePHP
デバッグ関数に似たものを使用したいと思います。
私はYii framework
を使用していますが、これはyii log
の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,
),
),
),
定義したコントローラーの1つで、このコードをテストしました。
Yii::log("CallFromUserController",'info', 'application');
ただし、これがFirebugに印刷されているのはわかりません。私はクリスの例を使用しました:
私はついに解決策を見つけることができました:
私の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));
アプリケーションログは、以下のすべてのページに表示されます。
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,
),
),
);
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());