18

很多时候我觉得需要转储一个变量来进行调试。在 CodeIgniter 中,我很难做到这一点,因为我不能简单地“回显”一个变量而不先将它传递给视图,我认为这很痛苦。我已经阅读了官方文档,虽然我找到了一个使用 log_message 函数的好解决方案,但无法使其工作,即使我成功地使“日志”文件夹可写并按照建议更改了“阈值”。有什么建议么?

https://www.codeigniter.com/user_guide/general/errors.html

4

4 回答 4

26

这不是一个好习惯,但您可以在执行的任何时候(从核心类、库、模型和控制器)向浏览器输出任何内容,只需print_r()在您想要输出信息的位置使用即可。

当然,这有时不会显示,因为可能有重定向/路由/等将用户带到控制器执行的下一步,但如果你想抑制它(再次,仅用于调试目的),你可以使用:

print_r($string_or_variable_to_debug);
die();

die()命令将停止所有执行,只留下您想要输出的信息。

使用log_message()是更好的做法,但是如果您说您已遵循以下步骤,则很难理解为什么您没有成功:

  1. 确保您的日志文件夹设置为可写
  2. 设置$config['log_threshold']为 2、3 或 4
  3. 像这样使用函数:log_message('debug','Message you want to log');

如果您想print_r()很好地格式化日志消息中的数组或对象,则需要设置 to 的第二个参数print_r()TRUE如下所示:

log_message('debug',print_r($array_or_object,TRUE));
于 2012-11-26T13:25:20.710 回答
15

您需要在文件 config.php 中设置 $config['log_threshold'] 因为默认情况下它是 0(无日志)

  • 0 = 禁用记录,错误记录已关闭
  • 1 = 错误消息(包括 PHP 错误)
  • 2 = 调试消息
  • 3 = 信息性消息
  • 4 = 所有消息
于 2012-11-26T10:35:16.573 回答
8

我认为您正在寻找的答案是: Codeigniter - Developer's Debug Helper

您可以将此文件添加到application/helper文件夹。然后自动加载vayes_helperapplication/config/autoload.php供一般使用。那么你需要做的就是写:

vdebug($variable); // In Controllers, Models, Libraries, Helpers
<?=vdebug($variable)?> // In View files
于 2013-07-16T12:51:42.117 回答
4
log_message('debug',print_r($array_or_object_you_want_to_print,TRUE));

这会将您的数组很好地打印到 log 中。以下是输出示例:

[1] => Array
    (
        [uid] => 10049082
        [phone_id] => 2
        [friend_status] => 0
        [friend_event_hide_status] => 
    )

[2] => Array
    (
        [uid] => 10042768
        [phone_id] => 4
        [friend_status] => 3
    )

[3] => Array
    (
        [uid] => 10078255
        [phone_id] => 6
        [friend_status] => 2
    )

[4] => Array
    (
        [uid] => 10078255
        [phone_id] => -1
        [friend_status] => 1
        [name] => Rajesh 
    )

[5] => Array
    (
        [uid] => 10078255
        [phone_id] => -1
        [friend_status] => 1
        [name] => ritesh kumar
    )

[6] => Array
    (
        [uid] => 10078255
        [phone_id] => -1
        [friend_status] => 1
        [name] => Le
    )
于 2015-03-06T09:43:51.857 回答