Подтвердить что ты не робот

Newline в error_log в php

Как вставить новую строку при использовании error_log() в php

Я пытался использовать <br> и \n, но они не работали.

4b9b3361

Ответ 1

При размещении сообщения об ошибке используйте двойные кавычки:

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.');

не будет работать: обратите внимание на одинарные кавычки.

Ответ 2

PHP_EOL управляет переводами строк на нескольких платформах:

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

Ответ 3

Как упоминалось ранее, вы можете использовать либо PHP_EOL, либо использовать двойные кавычки, чтобы выводить новую строку в файл журнала.

В любом случае при использовании консоли linux для отладки приложения команда tail покажет новую строку как \\\\n.

Простое решение - использовать sed, чтобы заменить \\\\n на \\n:

tail -f file | sed 's/\\n/\n/g'

Смотрите этот ответ:
https://serverfault.com/a/126409

Ответ 4

Я иногда сталкиваюсь с этой проблемой, но некоторые интерпретаторы PHP не всегда справедливо относятся к \n самостоятельно. Мое уродливое решение требует добавления необработанного кода ASCII для новой строки, \10, похоже, делает трюк. Поэтому попробуйте \n\10:

error_log("\n\10\n\10".$this->db->last_query()."\n\10\n\10");

Это печально выглядящий код, поэтому вы можете обернуть его в свою собственную функцию... но это делает журнал ошибок намного лучше, если вы хотите, чтобы что-то выделялось.

Я также не знаю, почему это работает лучше... не заботятся, чтобы узнать, но если кто-то знает, почему, было бы здорово услышать.

Ответ 5

При отладке, если вы хотите, чтобы ваша строка журнала ошибок выделялась, когда вы просматриваете журнал "tail -f", я использую небольшую функцию, подобную этой, чтобы сделать линию отличной и легко читаемой.

Просто вставьте некоторое пробел и общий термин, например "CUSTOM_LOG" для последующих целей grepping.

highlight_error_log('Msg here');

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

Ответ 6

Проблема возникает, когда процесс Apache не может записать в файл error_log, поэтому системный журнал записывает в файл. Системный журнал портит разрывы строк.

Так что просто сделайте:

chmod 777 error.log

Это должно решить вашу проблему.

Ответ 7

Если путь к журналу ошибок не определен как в файле php.ini и в вызове функции, то \n и \r\n не будут работать, даже если они заключены в двойные кавычки (вместо этого они будут отображаться в виде буквенных символов).

Вы можете исправить это, указав местоположение в php.ini:

error_log = /var/log/php-errors.log

или в каждом вызове функции PHP так:

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

Ответ 8

Это правильный ответ PHP_EOL управлять новыми строками на нескольких платформах:

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

https://blog.zohear.com/