[英]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.