YII logging for debugging

前端 未结 3 1403
无人共我
无人共我 2021-02-09 08:00

In many cases, Xdebug is not suitable for debugging as it involves clicks to run to a particular line of codes. I want to use something that is similar to cak

相关标签:
3条回答
  • 2021-02-09 08:32

    You should add following lines to your protected/main.php file for debug:true mode. Trust work like a charm !

    return array(
        'preload' => array(
            'debug',
        ),
        'components' => array(
            'debug' => array(
                'class' => 'ext.yii2-debug.Yii2Debug',
    
    
             ),
                'db' => array(
                    'enableProfiling' => true,
                    'enableParamLogging' => true,
                ),
            ),
        );
    
    0 讨论(0)
  • 2021-02-09 08:49

    I finally managed to find out a solution:

    In my main.php I did this:

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

    In my controller I used this code:

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

    The Application Log is shown below in every page.

    0 讨论(0)
  • 2021-02-09 08:52

    In Yii2

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

    An example of customized log class is given below.

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

    Example:

     Log.e("Copying the Estimate data failed. Model::getError(): ", 
            $model->getErrors());
    
    0 讨论(0)
提交回复
热议问题