如何在php
中使用error_log()
时插入换行符
我尝试使用<br>
和\n
,但这些都不起作用。
答案 0 :(得分:52)
在输入错误消息时使用双引号:
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.');
无效:请注意单引号。
答案 1 :(得分:25)
PHP_EOL管理多个平台上的换行符:
error_log("Error message".PHP_EOL, 3, 'error.log');
答案 2 :(得分:24)
如前所述,您可以使用tail
或使用双引号将输出换行到日志文件。
无论如何,当使用linux控制台调试应用程序时,\\\\n
命令会将新行显示为sed
。
简单的解决方案是使用\\\\n
将\\n
替换为tail -f file | sed 's/\\n/\n/g'
:
{{1}}
答案 3 :(得分:3)
我偶尔遇到这个问题,但是某些PHP解释器并不总是与\n
自己公平对待。我丑陋的解决方案需要为换行添加原始ASCII代码\10
,似乎可以解决问题。所以试试\n\10
:
error_log("\n\10\n\10".$this->db->last_query()."\n\10\n\10");
这是一个看起来很糟糕的代码,所以你可能想把它包装到你自己的函数中......但是如果你想要突出的话,它会让错误日志看起来好多了。
我也不知道为什么这样做效果更好......不在乎找不到,但是如果有人知道为什么,听到它会很酷。
答案 4 :(得分:0)
调试时,如果你想让你的错误日志行在你看日志'tail -f'时突出,我会使用这样一个小函数来使线条突出并易于阅读。
只需投入一些空白区域,以及一个常用术语,例如“CUSTOM_LOG”,以便日后使用。
highlight_error_log('Msg here');
function highlight_error_log($str){
error_log('CUSTOM_LOG: ' . $str . ' ');
}
答案 5 :(得分:0)
如果您的php.ini
文件和函数调用中的错误日志路径均未定义,则\n
和\r\n
将不起作用,即使在双引号中也是如此(它们将显示改为文字字符。)
您可以通过在php.ini
中指定位置来解决此问题:
error_log = /var/log/php-errors.log
或在每个PHP函数调用中如下:
error_log("error message", 3, $logFileLocation);
答案 6 :(得分:0)
这是正确的答案PHP_EOL
在多个平台上管理换行符:
error_log("Error message".PHP_EOL, 3, 'error.log');