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

Posted

技术标签:

【中文标题】php 在文本日志文件中格式化数组和对象等输出【英文标题】:php Format arrays and objects etc output in text logfile 【发布时间】:2015-09-16 11:07:00 【问题描述】:

应该是一个非常明显的答案,但我已经花了几个小时查看现有的类似问题,但没有一个对我有用

我的代码为(手动)调试等生成日志文件 如果我使用 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);

但是,现在发生的只是我看到 &lt;pre&gt; 标记添加到基本的非布局输出中

例如

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

【问题讨论】:

【参考方案1】:

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

您要么必须将日志文件设置为 HTML 文件(不一定必须有效,因此只需将 .html 添加到文件名并在浏览器中打开)或使用 var_dump 回显变量。

【讨论】:

谢谢。我之前确实有它在 .txt 文件中工作过,所以我认为可以按照这些方式做一些事情。不过,在浏览器中打开可能会有所帮助!【参考方案2】:

将文件重命名为 .html 扩展名,然后使用浏览器打开。浏览器将使用换行 html 文档检测它。 &lt;pre&gt;&lt;/pre&gt; 在浏览器中会像&lt;p&gt;&lt;/p&gt; 一样输出。

【讨论】:

以上是关于php 在文本日志文件中格式化数组和对象等输出的主要内容,如果未能解决你的问题,请参考以下文章

7.Logback主要标签

UE4日志使用教程

PHP常用的自定义函数

如何以人类可读的格式输出(到日志)多级数组?

php处理大文件文件

Python全栈开发——日志模块