php中的换行错误\u日志
如何在php中使用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。
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没有正确输出换行符。尾巴不会自动逃脱任何东西。这是唯一能帮我解决这个问题的方法。非常感谢