Запись в лог-файл в PHP

Несколько вариантов как быстро организовать запись данных в лог-файл.

1
$log = date('Y-m-d H:i:s') . ' Запись в лог';
file_put_contents(__DIR__ . '/log.txt', $log . PHP_EOL, FILE_APPEND);
PHP

Запись в лог-файле:

2019-02-02 16:00:38 Запись в лог
2

Если нужно записать в лог обычный массив, массив с индексами или многомерный массив, поможет функция 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);
PHP

Запись в лог-файле:

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);
PHP
2019-02-02 16:56:00 Array([foo] => bar[helo] => world[array] => Array([0] => 1[1] => 2))
3

Если нужно добавить в лог результат работы 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);
PHP

Запись в лог-файле:

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
4

Если логирование предполагает фиксацию только ошибок, то лучше писать их в общий лог PHP, подробнее на php.net.

error_reporting(E_ALL);
ini_set('error_log', __DIR__ . '/php-errors.log');
error_log('Запись в лог', 0);
PHP
[02-Feb-2019 20:18:17 Europe/Moscow] Запись в лог
06.02.2019, обновлено 11.11.2022
81086
Предыдущая запись Замена раскладки на PHP

Комментарии

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

Другие публикации

Массив $_SERVER
Описание значений глобального массива $_SERVER с примерами.
52645
+3
Пример парсинга html-страницы на phpQuery
phpQuery – это удобный HTML парсер взявший за основу селекторы, фильтры и методы jQuery, которые позволяют...
63014
+26
Работа с JSON в PHP
JSON (JavaScript Object Notation) – текстовый формат обмена данными, основанный на JavaScript, который представляет собой набор пар {ключ: значение}. Значение может быть массивом, числом, строкой и...
114426
+15
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
18511
+2
Список MIME типов
Ниже приведён список MIME-заголовков и расширений файлов.
25027
+7
Whois, как получить данные IP-адреса и домена в PHP
Несколько примеров как в PHP получить информацию о домене и IP-адресе.
19537
+5