Почему сообщения об ошибках навсегда, зарегистрированного


В настоящее время я запускаю forever в скрипте bash:

forever -v  -l log/system.log -e log/systemerr.log -w --watchIgnore '{log,data,node_modules}' app.js

Я также использую log4js для записи журналов для моего приложения (со следующей конфигурацией):

log4js.configure({
  appenders: [
    //{ type: 'console' },
    {
      type: "file", 
      absolute: true, 
      filename: "./log/app.log", 
      maxLogSize: 1000000,
      backups: 10
    }
  ]}); 

Все, кажется, работает в том смысле, что вывод моего приложения выводится в приложение.выход log and forever'S-l идет в систему.журнал:

warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms

Но следующее идет в консоль, и я бы подумал, что это пойдет в systemerr.журнал:

error: Could not read .foreverignore file.
error: ENOENT, open '/home/blah/blah/.foreverignore'
error: Forever detected script exited with code: 1
error: Script restart attempt #1

Как я могу получить эту информацию об ошибке, которую я мыслить порождается вечно, в systemerr.бревно?

1 2

1 ответ:

навсегда -e ERRFILE желаемый вариант:

Логирует stderr из дочернего скрипта в ERRFILE

Ошибки, производимые forever , не будут регистрироваться здесь, и это здорово, поскольку вы получаете только ошибки, производимые вашим приложением здесь.

Если вы действительно хотите получить навсегда ошибки в файле используйте перенаправление ввода-вывода для STDERR в вашем скрипте обертывания bash следующим образом:

forever ... 2>> forever-errors.log

Если вы все еще хотите по какой-то причине получить их ошибки в том же файле, что и журнал ошибок приложения, можно перенаправить и добавить STDERR в тот же файл, что и журнал ошибок.