php格式化文本日志文件中的数组和对象等输出


php Format arrays and objects etc output in text logfile

应该是一个非常明显的答案,但我花了几个小时研究现有的类似问题,没有一个对我有效

我的代码生成用于(手动(调试等的日志文件如果我使用print_r($array,TRUE(将数组的输出捕获为字符串,然后用<pre>标签进行回显以在屏幕上显示,那么查看和理解发生了什么真的很容易

然而,当我将相同的信息写入日志文件时,fwrite不会保留换行和缩进格式,因此会浪费大量的信息,尤其是较大的数组和对象。

我已经尝试使用输出缓冲

$string=print_r($array,TRUE);
ob_start();
echo "<pre>$string</pre>";
$outputBuffer = ob_get_contents();
ob_end_clean();
fwrite($handle,$outputBuffer);

然而,现在发生的一切是,我看到<pre>标签被添加到基本的、非布局的输出中

例如

<pre>DOING QUERY: SELECT * FROM event_triggers WHERE DateTime<='2015-09-16 13:04:30'</pre><pre>Completed checking for event triggers</pre>

您不能只将HTML标记添加到文档中,在编辑器中打开它,希望HTML标记能够正确呈现。

您要么必须将日志文件设置为HTML文件(不一定必须是有效的,所以只需在文件名中添加.HTML并在浏览器中打开它(,要么使用var_dump来回显变量。

将文件重命名为.html扩展名,然后用浏览器打开即可。浏览器将用换行html文档检测到它。<pre></pre>将在浏览器中像<p></p>一样输出。