[英]newline in error_log in php
如何在php中使用error_log()
时插入换行符
我试图使用<br>
和\\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_EOL管理多个平台上的换行符:
error_log("Error message".PHP_EOL, 3, 'error.log');
如前所述,您可以使用PHP_EOL
或使用双引号来输出日志文件的换行符。
无论如何,当使用linux控制台调试应用程序时, tail
命令会将新行显示为\\\\\\\\n
。
简单的解决方案是使用sed
以用\\\\n
替换\\\\\\\\n
\\\\n
:
tail -f file | sed 's/\\n/\n/g'
看到这个答案:
https://serverfault.com/a/126409
我偶尔会遇到这个问题,但是某些PHP解释器并不总是能够自己公平地使用\\n
。 我丑陋的解决方案需要为换行添加原始ASCII代码, \\10
,似乎可以解决问题。 所以试试\\n\\10
:
error_log("\n\10\n\10".$this->db->last_query()."\n\10\n\10");
这是看起来很糟糕的代码,所以你可能想把它包装到你自己的函数中......但是如果你想要突出的话,它会使错误日志看起来好多了。
我也不知道为什么这样做效果更好......不在乎找不到,但如果有人知道为什么,听到它会很酷。
在调试时,如果你想让你的错误日志行在你看日志'tail -f'时脱颖而出,我会使用这样一个小函数来使线条突出并易于阅读。
只需抛出一些空白区域,以及一个常用术语,如“CUSTOM_LOG”,以便日后使用。
highlight_error_log('Msg here');
function highlight_error_log($str){
error_log('CUSTOM_LOG: ' . $str . ' ');
}
如果您的php.ini
文件和函数调用中的错误日志路径未定义,则\\n
和\\r\\n
将无效,即使双引号(它们将显示为文字字符)。
你可以通过在php.ini
指定一个位置来解决这个问题:
error_log = /var/log/php-errors.log
或者在每个PHP函数调用中如下:
error_log("error message", 3, $logFileLocation);
这是正确答案PHP_EOL
管理多个平台上的换行符:
error_log("Error message".PHP_EOL, 3, 'error.log');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.