2015-01-28 20 views
6

Ho uno stack Opsworks con un'applicazione Node.js Layer e Node.js. Mi chiedo se qualcuno sa dove su un'istanza di Ubuntu 14.04LTS vengono stampati i log della console dalla mia applicazione. So che opsworks usa monit per eseguire la mia applicazione, ma non sono sicuro di dove sia l'output dei log.Node.js Log della console OpsWorks Layer

Grazie!

risposta

7

Così fastidiosamente abbastanza, la configurazione Monit rendering per Node.js applicazioni su Opsworks non invia l'output ovunque! Source for this claim. (Questo mi ha sorpreso quando l'ho saputo!)

Quello che mi consiglia di fare è ignorare quel modello - vedi the OpsWorks documentation on overriding templates: in pratica tutto ciò che devi fare è copiare incollare la config di Monit da Amazon, ma cambiare la linea 2 per reindirizzare l'output in un file, come faccio io qui di seguito in modo da:

start program = "/bin/bash -c 'cd <%= @deploy[:deploy_to] %>/current ; source <%= @deploy[:deploy_to] %>/shared/app.env ; /usr/bin/env PATH=$PATH:/usr/local/bin PORT=<%= @deploy[:nodejs][:port] %> NODE_PATH=<%= @deploy[:deploy_to] %>/current/node_modules:<%= @deploy[:deploy_to] %>/current /usr/local/bin/node <%= @monitored_script %> &> <%= @deploy[:deploy_to] %>/current/log/production.log'"

+0

grazie! si, è strano che non mandino l'uscita da nessuna parte. – mu888

+0

Grazie RyanWilcox! Ho aggiunto un override simile a [aws-cookbook-boilerplate] (https://github.com/dmarcelino/aws-cookbook-boilerplate/blob/master/opsworks_nodejs/templates/default/node_web_app.monitrc.erb#L2) . –

+0

Grazie per questo - ma come si accede al registro e dove cercarlo quando si SSH all'istanza? Grazie! – Leo

-2

A meno che il comportamento di console.log non sia stato modificato, node emetterà i registri console.log sull'output standard dell'applicazione (stdout). Se si sta eseguendo l'applicazione nodo in una console o si utilizza ssh, è necessario visualizzare i registri lì. In caso contrario, provare a reindirizzare lo stdout della vostra applicazione in un file in modo da poter vedere anche se lo si esegue senza una console, in questo modo: node myapp.js > logfile

Un modo preferito sarebbe quello di utente Forever per essere sicuri di applicazione è costantemente in e non c'è possibile reindirizzare l'output (sia stdout e stderr) come segue:

/>forever -o forever.out -e forever.err myapp.js 
1

ho trovato i registri effettuando le seguenti operazioni (simile a @ di RyanWilcox commento):

  1. ho trovato il mio schieramento "corrente" in/srv/www/{NOME APP}/curren t/
  2. file di quotazione, ho potuto vedere il link simbolico directory di registro (log dovrebbe essere collegato simbolicamente a qualcosa di simile a/srv/www/{NOME APP}/shared/log
  3. mi sono imbattuto in un problema di autorizzazioni cercando di cd per questa directory, così ho passa al super utente senza una password utilizzando il comando "sudo su" e poi ho potuto accedere alla directory
  4. infine nella directory logs, ho potuto vedere i log della console nodejs per STDERR e STDOUT

... e il padre di Bob è il padre di tuo padre.

1

Lo si può trovare nella cartella app allora troverete questo percorso condiviso/log

ad esempio: /srv/www/my_app/shared/log