2016-02-12 30 views
6

Raspbian Jessie OS kullanarak bir Raspberry Pi 2 üzerinde çalışan bir IoT projem var.Loggly, Winston üzerinden çalışmıyor Pi

Bu, NodeJS (v4) çalışan bir web sunucusudur ve Loggly'nin günlük kayıt hizmetine giriş yapmak için Winston kullanıyorum. Proje, npm start aracılığıyla terminalden ("pi" veya sudo-s ile çalışırken) başlatıldığında çalışır. Ancak, proje açılışta başladığında, günlüğe kaydetme işlemi çalışmıyor ve neden işe yaramıyor.

Projeyi açılışta başlatmak için bir etc/init.d komut dosyası oluşturdum. Proje trafiği başlatıyor ve hizmet veriyor, her şey günlüğe kaydetme dışında harika çalışıyor. Herhangi bir hata göremiyorum (günlük kaydı olmamasına rağmen yardım etmiyor). Winston-loggly https://www.npmjs.com/package/winston ve: Ben Winston kullanıyorum

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

: Bu benim etc/init.d betikleri içinden projemi başlatmak nasıl https://www.npmjs.com/package/winston-loggly.

İşlemin açılışta başlatılmasının neden günlüğe kaydedilmediğinin herhangi bir fikri yok mu? istendiği gibi

ekleme Winston başlatma kodu: npm start çalıştırdığınızda

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

Günlük yapılandırmanızda herhangi bir göreli yol var mı? Ayrıca bu kodu ekleyebilmeniz için winston başlatma işleminizi 'server.js'den görmeniz yararlı olur mu? –

+0

Sunucu.js'den başlatma kodu eklendi - farkında olduğum bir günlük yapılandırması yok. – ConfusedNoob

cevap

2

, düğüm bir komut arar senin package.json dosyasında nesne ve start anahtarla ilişkili komutları çalıştırın. senin init.d komut dosyasında

Eğer npm start çalışan, ancak bunun yerine sadece düğümü çalıştıran ve (o dosyayı çalışacağı) ilk argüman olarak server.js dosyayı iletmediğinizi.

Büyük olasılıkla, start kod dosyasında günlüğe kaydetme işlemini doğru bir şekilde çalıştırmak için gereklidir. Bunu çözmek için aşağıdakileri yapabilirsiniz:

    proje kök dizinine init.d komut olarak
  • , cwd ve sonra npm start çalıştırın.
  • start komut dosyanızın ne işe yarayacağını görmek için package.json öğemize bakın ve init.d kod dosyanıza eşdeğeri ekleyin.
+0

Ne yazık ki bu herhangi bir fark yaratmadı. Yerel projemi de aynı şekilde çalıştırmayı denedim./usr/local/bin/node/Users/Me/Documents/Projects/server.js' ve bu iyi çalıştı, beklendiği gibi günlüğe kaydedildi. Package.json'umda 'start' betiği yok - harika öneriler var ama bu yanlış görünmüyor gibi görünüyor. – ConfusedNoob

+0

Çalışma dizinini değiştirmek için /etc/init.d komut dosyasını güncelledim ve npm start. Daha sonra, betiği manuel olarak çalıştırmak için sudo -s' kullanıyorum. /etc/init.d/myscript start'. Bu harika çalışıyor, kayıt iyi. Ancak, betik yeniden başlatıldığında yürütülürse ... hiçbir şey :( – ConfusedNoob