写一个把调试信息输出到磁盘文件的DEBUG程序

原创 2007年10月06日 17:11:00
昨天提到过,在下正在看OPENCART的源代码,随着工作的深入,局面日益复杂起来,写一些如echo,print_r等语句直接把变量显示在浏览器上,不仅干扰了正常的系统显示,因为SESSION的使用,也会造成系统运行时的干扰。要想个办法能把调试信息保存在一个文件里,运行过后调出来慢慢看,不是一个很好的办法吗?

   突然想起前两天发到论坛里的一篇文章:http://www.phpchina.com/bbs/thread-37420-1-2.html,里面不是有一个好的调试类吗?找出来一看,果然可以利用上,就搬出来做到一个文件里,代码如下

<?php

/* usage:
     write in:
        ZFDemo_Log::log("PHP extensions loaded = /n    " . implode("/n    ", $extensions));
     or:
        ZFDemo_Log::log("The '$ext' extension is required, but not currently loaded by php.");
       
        ZFDemo_Log::log("Zend_Session.ini=" . print_r($sessionConfig->toArray(), true));
        
     output:
        ZFDemo_Log::show();  

require_once('zfdemo_log.php');

*/

class ZFDemo_Log
{
    // very simple running log of "debug/" messages to highlight inner workings of demo
    public static $log = '';


    /**
     * Accumulate log messages, but also append them to a running log file for easy viewing.
     */
    public static function log($msg, $before = null)
    {
        static $flushed = false;
        if ($before) {
            self::$log = "$msg/n" . self::$log;
        } else {
            self::$log .= "$msg/n";
        }

        $logfile = 'log.txt';
        // performance is not an issue, so just sync to disk everytime
        if (isset($logfile)) {
            if ($flushed) {
                file_put_contents($logfile, "$msg/n", FILE_APPEND);
            } else {
                file_put_contents($logfile, self::$log);
            }
            $flushed = true;
        }
    }


    /*
     * Useful if you modify the demo, and need to quickly see the debug log in your browser.
     */
    public static function show()
    {
        echo "<html><head><title>ZF Demo Debug Log</title></head>/n<body>/n<pre>";
        echo htmlentities(self::$log, ENT_QUOTES, 'UTF-8');
        echo '</pre></body></html>';
    }


    public static function get()
    {
        return self::$log;
    }
}

保存到你正在开发的文件夹中,可以放在一个子目录下,如/DEBUG/zfdemo_log.php,然后在你需要调试的文件里进行调用,例示代码如下:

<pre>
<?php
require_once('debug/zfdemo_log.php');
$a = array (1, 2, array ("a", "b", "c"));

$b = array (3, 4, array ("d", "f", "g"));


ZFDemo_Log::log('$a=' . print_r($a, true));

ZFDemo_Log::log('$b=' . print_r($b, true));

ZFDemo_Log::show(); 

?>
</pre> 

执行后系统正常运行,然后在同一目录下可以找到一个文本文件log.txt,内容如下:

$a=Array
(
    [0] => 1
    [1] => 2
    [2] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )

)

$b=Array
(
    [0] => 3
    [1] => 4
    [2] => Array
        (
            [0] => d
            [1] => f
            [2] => g
        )

)

 

在对复杂的系统进行调试时,这种方法不失高效方便。当然如果需要直接在屏幕上查看调试信息的话,可在相应位置写入代码:

  ZFDemo_Log::show();  

即可实现浏览器上直接显示调试信息。

   (当时发贴时,二楼一个家伙马上就说这个教程“误人子弟”,其目的无非是想打压ZF,不过大家可以看到,这个例子中可以提出这么好的调试类代码,怎么说也会对大伙有益吧,如果你觉得这份东东对你有帮助,请留言支持一下吧

 

相关文章推荐

让 IPhone 程序的调试信息只在 debug 模式下输出 转自:hager的博客

iPhone 应用发布后,程序运行过程中尽量不要有调试 log 信息输出,因为这样会影响程序运行的效率。通过宏定义设置,使得程序只在 debug 模式下输出这些只对于我们开发者有用的信息,而 rele...

让 IPhone 程序的调试信息只在 debug 模式下输出

from:http://blog.csdn.net/hufeng825/article/details/7410871 iPhone 应用发布后,程序运行过程中尽量不要有调试 log 信息输出,...

Linux 程序开发打印 Debug 信息的使用技巧--C语言中几种输出调试信息的方法

Linux 程序开发打印 Debug 信息的使用技巧

易语言输出debug调试信息

  • 2014年06月13日 08:46
  • 68KB
  • 下载

有两个磁盘文件“A"和”B",各存放一行字母,先要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件“C"中去。

有两个磁盘文件“A"和”B",各存放一行字母,先要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件“C"中去。 分析: 根据题目要求,可将此函数大致分为如下几个步骤。 ...

谈在Debug和Release模式下输出调试信息 .

在调试程序时,有时候设置断点单步运行并不能查出问题的所在,比如程序可能在运行一段时间后死掉了,或者对于Release版本运行不正常等等原因吧,这时需要通过设置一些输出信息,来帮助定位错误发生的位置,这...

Debug 输出字符串 调试信息

使用工具:VC6.0,IDA 当我们要在程序中输出调试信息时,常常以字符串的形式来输出,例如: 1.printf("Some debug information here!\n"); ...

C语言输出DEBUG调试信息的方法

问题提出我们在调试程序时,输出调试信息(又称为”打桩”或者”插桩”)是一种普遍、有效的方法。我们输出的信息通常包括行号、函数名、程序变量等。但是我们在程序BUG修复后,又会特别烦我们之间插入的哪些调试...
  • gatieme
  • gatieme
  • 2015年05月13日 10:30
  • 8337

谈在Debug和Release模式下输出调试信息

在调试程序时,有时候设置断点单步运行并不能查出问题的所在,比如程序可能在运行一段时间后死掉了,或者对于Release版本运行不正常等等原因吧,这时需要通过设置一些输出信息,来帮助定位错误发生的位置,这...
  • zwgdft
  • zwgdft
  • 2012年04月29日 09:53
  • 4583

chrome浏览器debug版本调试并且输出调试信息

1、来这里下载debug版本的flash player http://www.adobe.com/support/flashplayer/downloads.html 2、把以前的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:写一个把调试信息输出到磁盘文件的DEBUG程序
举报原因:
原因补充:

(最多只允许输入30个字)