2016-02-12 5 views
6

У меня есть проект IoT, работающий на малине Pi 2 с использованием Raspbian Jessie OS.Логгли не работает через Winston on Pi

Это веб-сервер, работающий в NodeJS (v4), и я использую Winston для входа в службу регистрации Loggly. Все работает хорошо, когда проект запускается через npm start с терминала (при запуске как «pi» или через sudo -s). Однако, когда проект запускается при загрузке, ведение журнала не работает, и я не могу понять, почему.

Чтобы начать проект при загрузке, я создал сценарий etc/init.d. Проект запускается и обслуживает трафик, все работает отлично, за исключением регистрации. Я не вижу ошибок (хотя не удалось выполнить регистрацию). Это, как я начинаю свой проект внутри моего и т.д./init.d скрипт:

/usr/bin/node /var/www/curtains/server.js 

Я использую Winston: https://www.npmjs.com/package/winston и Winston-loggly: https://www.npmjs.com/package/winston-loggly.

Любые идеи, почему при запуске процесса при загрузке регистрация не работает?

Добавление Winston код инициализации по запросу:

var winston = require('winston'); 
require('winston-loggly'); 

winston.add(winston.transports.Loggly, { 
    token: "<snip>", 
    subdomain: "<snip>", 
    tags: ["tag", ip.address()], 
    json:true 
}); 

winston.log('info',"Server.js starting up"); 
+0

Есть ли у вас относительные пути в конфигурации журнала? Также было бы полезно увидеть вашу инициализацию winston от 'server.js', можете ли вы добавить этот код? –

+0

Добавлен код инициализации server.js - нет конфигурации журнала, о которой я знаю. – ConfusedNoob

ответ

2

При запуске npm start, узел будет искать скрипты объекта в файле package.json и запускать команды, связанные с ключом start.

В вашем init.d сценарии вы не используете npm start, но вместо этого просто работает узел и передавая файл server.js в качестве первого аргумента (который будет работать этот файл).

Скорее всего, что-то в вашем скрипте start необходимо для правильного ведения журнала. Чтобы решить эту проблему, вы можете:

  • В вашем init.d сценарии, cwd в корневом каталоге проекта, а затем запустить npm start.
  • Посмотрите, что еще делает ваш скрипт start, и добавьте его в свой код init.d.
+0

К сожалению, это не имело никакого значения. Я также попытался запустить мой локальный проект таким же образом, например. '/ usr/local/bin/node/Users/Me/Documents/Projects/server.js', и это сработало нормально, как и ожидалось. В моем package.json нет сценария «start», но это не похоже на то, что не так. – ConfusedNoob

+0

Я обновил сценарий /etc/init.d, чтобы изменить рабочий каталог и запуск npm. Затем я использовал 'sudo -s' для запуска скрипта вручную, например. '/etc/init.d/myscript start'. Это отлично работает, регистрация хороша. Однако, когда скрипт выполняется при перезагрузке ... ничего :( – ConfusedNoob