Логирование в файл PHP
На этой странице представленно несколько вариантов как быстро организовать запись данных в лог-файл.
Строки текста
Код:
$log = date('Y-m-d H:i:s') . ' Запись в лог';
file_put_contents(__DIR__ . '/log.txt', $log . PHP_EOL, FILE_APPEND);
Запись в лог-файле:
2019-02-02 16:00:38 Запись в лог
Массивы
Если нужно записать в лог обычный массив, массив с индексами или многомерный массив, поможет функция print_r()
.
Код:
$array = array(
'foo' => 'bar',
'helo' => 'world',
'array' => array(1, 2)
);
$log = date('Y-m-d H:i:s') . ' ' . print_r($array, true);
file_put_contents(__DIR__ . '/log.txt', $log . PHP_EOL, FILE_APPEND);
Запись в лог-файле:
2019-02-02 16:43:27
Array
(
[foo] => bar
[helo] => world
[array] => Array
(
[0] => 1
[1] => 2
)
)
В одну строку
Код:
$array = array(
'foo' => 'bar',
'helo' => 'world',
'array' => array(1, 2)
);
$log = date('Y-m-d H:i:s') . ' ';
$log .= str_replace(array(' ', PHP_EOL), '', print_r($array, true));
file_put_contents(__DIR__ . '/log.txt', $log . PHP_EOL, FILE_APPEND);
Запись в лог-файле:
2019-02-02 16:56:00 Array([foo] => bar[helo] => world[array] => Array([0] => 1[1] => 2))
Результат работы PHP скрипта
Если нужно добавить в лог результат работы PHP скрипта, помогут функции буферизации ob_start()
и ob_get_clean()
.
Код:
ob_start();
// Вывод заголовков браузера.
foreach (getallheaders() as $name => $value) {
echo "$name: $value\n";
}
$log = date('Y-m-d H:i:s') . PHP_EOL . ob_get_clean() . PHP_EOL;
file_put_contents(__DIR__ . '/log.txt', $log, FILE_APPEND);
Запись в лог-файле:
2019-11-20 12:54:58
Host: example.com
X-HTTPS: 1
X-Forwarded-Proto: https
Connection: close
cache-control: max-age=0
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534 (KHTML, like Gecko)
sec-fetch-user: ?1
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
x-compress: null
sec-fetch-site: none
sec-fetch-mode: navigate
accept-encoding: gzip, deflate, br
accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
cookie: PHPSESSID=123
Запись в лог ошибок PHP
Если логирование предполагает фиксацию только ошибок, то лучше писать их в общий лог PHP, подробнее на php.net.
Код:
error_reporting(E_ALL); // Механизм ошибок/исключений, всегда используйте E_ALL
ini_set('ignore_repeated_errors', TRUE); // Всегда используйте TRUE
ini_set('display_errors', FALSE); // Отображение ошибки/исключения, используйте значение FALSE только в рабочей среде или на реальном сервере, используйте TRUE в среде разработки
ini_set('log_errors', TRUE); // Механизм протоколирования файлов ошибок/исключений
ini_set('error_log', 'errors.log'); // Путь