Node.js OpsWorks Layer console logs

情到浓时终转凉″ 提交于 2019-11-29 09:43:01

问题


I have an Opsworks stack with a Node.js Layer and Node.js Application. I'm wondering if anyone knows where on an ubuntu 14.04LTS instance the console logs from my application are being printed to. I know the opsworks uses monit to run my application but I'm not sure where its outputting the logs to.

Thanks!


回答1:


So annoyingly enough, the Monit configuration rendered for Node.JS apps on Opsworks doesn't send the output anywhere! Source for this claim. (This surprised me when I learned about it!)

What I recommend doing is overriding that template - see the OpsWorks documentation on overriding templates: essentially all you need to do is copy paste the Monit config from Amazon, but change line 2 to redirect the output to a file, like I do below so:

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'"




回答2:


You can find it in the app directory then you will find this path shared/log

for example : /srv/www/my_app/shared/log




回答3:


I found the logs by doing the following (similar to @RyanWilcox's comment):

  1. I found my "current" deployment in /srv/www/{APP NAME}/current/
  2. listing files, I could see the log directory symlink (log should be symlinked to something like /srv/www/{APP NAME}/shared/log
  3. I ran into a permissions issue trying to cd to this directory, so I switched to the super user without a password using the command "sudo su" and then I could access the directory
  4. finally in the logs directory, I could see the nodejs console logs for STDERR and STDOUT

... and Bob's father is your father's father.




回答4:


Unless behavior of console.log was altered, node will output console.log logs to the application's standard output (stdout). If you are running your node application in a console or using ssh, you should see the logs there. Otherwise, try redirecting the stdout of your application to a file so you can see it even if you run it without a console, in this way: node myapp.js > logfile

A preferred way would be to user Forever to make sure you application is constantly on and there you can redirect your output (both stdout and stderr) as follows:

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


来源:https://stackoverflow.com/questions/28183395/node-js-opsworks-layer-console-logs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!