2016-02-12 34 views
6

Mam projekt IoT uruchomiony na Raspberry Pi 2 przy użyciu Raspbian Jessie OS.Loggly nie działa przez Winston na Pi

Jest to serwer sieciowy działający w NodeJS (v4) i używam Winston do logowania do usługi rejestrowania Loggly. Wszystko działa dobrze, gdy projekt jest uruchamiany z poziomu terminalu (gdy jest uruchomiony jako "pi" lub przez sudo -s). Jednak, gdy projekt rozpoczyna się przy rozruchu, rejestrowanie nie działa i nie mogę zrozumieć dlaczego.

Aby uruchomić projekt podczas rozruchu, utworzyłem skrypt etc/init.d. Projekt rozpoczyna się i obsługuje ruch, wszystko działa świetnie, z wyjątkiem logowania. Nie widzę żadnych błędów (chociaż rejestrowanie nie pomaga). Jest to jak zacznę mój projekt od wewnątrz mojego etc/init.d skryptu:

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

Używam Winston: https://www.npmjs.com/package/winston Winston-loggly: https://www.npmjs.com/package/winston-loggly.

Jakieś pomysły, dlaczego, gdy proces jest uruchamiany podczas uruchamiania, rejestrowanie nie działa?

Dodawanie Winston kod inicjalizacji na żądanie:

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

Czy są jakieś ścieżki względne w konfiguracji dziennika? Również byłoby pomocne zobaczenie twojej inicjacji Winston z 'server.js' czy możesz dodać ten kod? –

+0

Dodano kod inicjujący z serwera server.js - nie ma konfiguracji dziennika, o której jestem świadomy. – ConfusedNoob

Odpowiedz

2

Po uruchomieniu npm start, węzeł będzie szukać skryptów obiektów w pliku package.json i uruchomić polecenia związane z kluczem start.

W twoim skrypcie nie używasz npm start, ale zamiast tego po prostu uruchamiasz węzeł i przekazujesz swój plik server.js jako pierwszy argument (który będzie uruchamiał ten plik).

Najprawdopodobniej potrzebne jest coś ze skryptu start, aby poprawnie przeprowadzić rejestrowanie. Aby rozwiązać ten problem, można:

  • W skrypcie init.d, cwd do korzenia projektu, a następnie uruchomić npm start.
  • Sprawdź w swoim numerze package.json, co robi skrypt start i dodaj odpowiednik do skryptu init.d.
+0

Niestety nie miało to znaczenia. Próbowałem też uruchomić mój lokalny projekt w ten sam sposób, np. '/ usr/local/bin/node/Users/Me/Documents/Projects/server.js' i to działało poprawnie, logując się zgodnie z oczekiwaniami. W moim package.json nie ma też skryptu "startowego" - świetne sugestie, ale nie wygląda na to, że coś jest nie tak. – ConfusedNoob

+0

Zaktualizowałem skrypt /etc/init.d, aby zmienić katalog roboczy i npm start. Następnie użyłem 'sudo -s' do ręcznego uruchomienia skryptu, np. '/etc/init.d/myscript start'. To działa świetnie, logowanie jest dobre. Jednak, gdy skrypt zostanie uruchomiony po restarcie ... nic :( – ConfusedNoob