Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的换行错误\u日志_Php - Fatal编程技术网

php中的换行错误\u日志

php中的换行错误\u日志,php,Php,如何在php中使用error\u log()时插入换行符 我尝试使用和\n但这些都不起作用。在放置错误消息时使用双引号: error_log("This is a two lined message. \nThis is line two."); 应该有用 error_log('This is a one lined message. \nThis is the same line still.'); 不起作用:请注意单引号。我偶尔会遇到这个问题,但某些PHP解释器并不总是自己公平处理\n。

如何在php中使用
error\u log()
时插入换行符


我尝试使用

\n
但这些都不起作用。

在放置错误消息时使用双引号:

error_log("This is a two lined message. \nThis is line two.");
应该有用

error_log('This is a one lined message. \nThis is the same line still.');

不起作用:请注意单引号。

我偶尔会遇到这个问题,但某些PHP解释器并不总是自己公平处理
\n
。我的丑陋解决方案要求为换行符添加原始ASCII代码,
\10
,似乎可以做到这一点。因此,请尝试
\n\10

error_log("\n\10\n\10".$this->db->last_query()."\n\10\n\10");
这是一段看起来很糟糕的代码,所以您可能希望将其包装到您自己的函数中。。。但是如果你想突出一些东西,它会让错误日志看起来更好


我也不知道为什么这个效果更好。。。不要太在意去发现,但如果有人知道原因,听到这个消息会很酷。

PHP\u EOL在多个平台上管理新行:

error_log("Error message".PHP_EOL, 3, 'error.log');

在调试时,如果您想在查看日志“tail-f”时突出错误日志行,我将使用类似这样的一个小函数使该行突出并易于阅读

只需添加一些空白,以及一个常见的术语,如“CUSTOM_LOG”,以供以后进行grepping

highlight_error_log('Msg here');

function highlight_error_log($str){
    error_log('CUSTOM_LOG:            ' . $str . '            ');
}

如前所述,您可以使用
PHP\u EOL
或使用双引号将换行符输出到日志文件中

无论如何,当使用linux控制台调试应用程序时,
tail
命令将新行显示为
\\\\n

简单的解决方案是使用
sed
\\\\n
替换为
\\n

tail -f file | sed 's/\\n/\n/g'
请参见以下答案:

如果在
php.ini
文件和函数调用中都未定义错误日志路径,则
\n
\r\n
将不起作用,即使是双引号(它们将显示为文字字符)

您可以通过在
php.ini
中指定位置来修复此问题:

error_log = /var/log/php-errors.log
或者在每个PHP函数调用中,如下所示:

error_log("error message", 3, $logFileLocation);

这是正确答案
PHP\u EOL
在多个平台上管理新行:

error_log("Error message".PHP_EOL, 3, 'error.log');

我不会那样做。我希望错误日志中的每一行都是一个条目。在两行或多行上传播消息会破坏这一点。您还没有给出第二个和第三个参数(错误日志文件的名称),所以?其他参数是可选的。也许您应该指定您想要实现的目标,因为AFAICT刚刚为您提供了问题的解决方案。@Satish,很抱歉这么晚才发表评论,但是,如果我们不添加任何第二个和第三个参数,日志会写入php的默认错误日志文件:“php\u errors.log”,这是受欢迎的。@Koks\u rs:try
\r\n
在MS Windows中?很好,可以在IIS上运行php\10不起作用,但这一个起作用。回答很好,但我建议另一个顺序:在新行上打印每个新的错误消息:
error\u log(PHP\u EOL.“error message”,3,“error.log”)以及如何与grep一起使用?这实际上证明了error_log没有正确输出换行符。尾巴不会自动逃脱任何东西。这是唯一能帮我解决这个问题的方法。非常感谢