Исключение консоли Symfony не зарегистрировано выходным файлом cron - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть несколько команд для моего проекта SF3.4, запущенного crontab.

У меня есть простой adddate.sh скрипт, добавляющий дату и время перед каждой строкой сообщения:

while read x; do
    echo -n `date +%Y-%m-%d\ %H:%M:%S`;
    echo -n " ";
    echo $x;
done

Запуск cron, как это:

* * * * * www-data bin/console the:command >> some.log 2>&1

Результат some.log, когда команда выдает исключение:

12:12:25 ERROR     [console] Error thrown while running command "the:command". Message: "lol" ["error" => Exception { …},"command" => "the:command","message" => "lol"] []

  [Exception]
  lol

Так что в этом случае все в порядке. Исключение зарегистрировано.

Запуск cron, как это (с adddate.sh):

* * * * * www-data bin/console the:command | adddate.sh >> some.log 2>&1

Результат в some.log при правильном выполнении:

2018-01-01 12:24:01 Result of console line1
2018-01-01 12:24:01 Result of console line2

Хорошо, это как и ожидалось! Но ...

Результат, когда команда выдает исключение: ничто ... Буквально ничего. Даже не одна строка. Также нет ошибок в системном журнале cron. Почему добавление сценария "pipe" в результат команды останавливает запись сообщений об исключениях?

1 Ответ

0 голосов
/ 16 ноября 2018

Канал Unix соединяет стандартный вывод одной команды со стандартным вводом другой.https://en.wikipedia.org/wiki/Pipeline_%28Unix%29

Кажется, что сообщения об исключении напечатаны со стандартной ошибкой.Попробуйте перенаправить stderr к stdout перед конвейером:

* * * * * www-data bin/console the:command 2>&1 | adddate.sh >> some.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...