Как записать сообщение в журнал
Короткий ответ
Дописывайте в файл строку с датой:
<?php
function logMessage(string $file, string $message): void
{
$line = sprintf("[%s] %s\n", date('Y-m-d H:i:s'), $message);
file_put_contents($file, $line, FILE_APPEND | LOCK_EX);
}
$file = sys_get_temp_dir() . '/recipe-app.log';
file_put_contents($file, '');
logMessage($file, 'User 42 logged in');
logMessage($file, 'Order 7 paid');
echo count(file($file)), ' lines';Результат:
2 linesВстроенная функция
error_log() пишет в журнал ошибок PHP или, с типом 3, в указанный файл:
<?php
$file = sys_get_temp_dir() . '/recipe-errors.log';
file_put_contents($file, '');
error_log("Payment failed for order 7\n", 3, $file);
echo file_get_contents($file);Результат:
Payment failed for order 7В большом проекте
Берите библиотеку Monolog: она умеет уровни сообщений, ежедневные файлы и отправку в сторонние сервисы. В журнал не пишут пароли, токены и номера карт.
Функции из этого ответа
- error_log — Записывает сообщение в журнал ошибок.
- file_put_contents — Записывает данные в файл.
- date — Форматирует дату и время.