Node.js OpsWorks Layer console logs

前端 未结 4 1109
暖寄归人
暖寄归人 2020-12-30 14:35

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 applicati

相关标签:
4条回答
  • 2020-12-30 15:08

    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.

    0 讨论(0)
  • 2020-12-30 15:10

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

    0 讨论(0)
  • 2020-12-30 15:11

    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
    
    0 讨论(0)
  • 2020-12-30 15:26

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

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

    0 讨论(0)
提交回复
热议问题