В Laravel, когда вы используете планировщик задач (Scheduler
) для запуска определенных команд по расписанию, вы можете добавить метод appendOutputTo
для записи вывода выполнения команды в файл. Однако, если вы хотите отправлять на email только лог последнего выполнения команды, а не все предыдущие, вам потребуется немного дополнительной логики.
Для того чтобы отправить на email только лог последнего выполнения команды, вам нужно будет изменить способ сохранения логов вывода. Вместо appendOutputTo
, вы можете использовать метод ->sendOutputTo
, который будет перенаправлять вывод выполнения команды не в файл, а напрямую на email.
Пример:
$schedule->command('your:command') ->sendOutputTo('email@example.com');
Однако, если вы все же хотите сохранять логи выполнения в файл с помощью appendOutputTo
, но отправлять на email только последний лог, вам придется использовать дополнительную логику. Например, вы можете добавить к задаче скрипт, который будет анализировать лог файл и отправлять его содержимое на email.
Пример:
$schedule->command('your:command') ->appendOutputTo('/path/to/output.log') ->then(function () { $lastOutput = trim(shell_exec('tail -n 1 /path/to/output.log')); mail('email@example.com', 'Last command output', $lastOutput); });
В данном примере, после выполнения команды your:command
, мы считываем последнюю строку из лог файла и отправляем ее содержимое на указанный email.
Имейте в виду, что использование такой логики может потребовать дополнительных настроек и проверок для обеспечения безопасности и надежности отправки логов на email.