Laravel планировщик. Как отправлять на email только лог последнего выполнения при appendOutputTo?

В 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.