开发者

PHP-Yii: Using Yiis logger when a request is not completed due to php level error

开发者 https://www.devze.com 2023-02-20 17:04 出处:网络
This is probably a yii specific question, even though I wouldn\'t surprised if experienced non-Yii we d开发者_Python百科evelopers will be also able to contribute.

This is probably a yii specific question, even though I wouldn't surprised if experienced non-Yii we d开发者_Python百科evelopers will be also able to contribute.

I often encounter the following situation:

  1. My application fails due to a fatal error on the php level. Something like $var->property when $var==null
  2. I want to understand how $var came to be ==null.
  3. I'd use logs for this, however, problem is that no logs are left when a request is ended due to php error.

edit: this only happens for fatal errors. For other php errors I have my logs back

An example: For

$nonExistingVar->someProperty;

I do have my logs recorded, as it yields PHP Error Undefined variable: nonExistingVar However, if I do define the variable and set it to null,

$tmp = null;
$tmp->prop;

Then I loose the logs, as it results in "Fatal error: Call to a member function hasErrors() on a non-object"

Does anybody understand why does it happen? And how can the logger be anyway used in this situations? I tried setting autoFlush=1, doesn't help

Thanks

Gidi


The below allowed me to have my logs even on fatal errors:

function yiiCorrectShutdown()
{
    Yii::app()->end();

    //the following line will work as well
    //Yii::app()->log->processLogs(null);
}

register_shutdown_function('yiiCorrectShutdown');


I wrote an extension class that logs in real-time thus avoiding any need to modify flow paths. I posted it here on the Yii Wiki

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号