我有一个带有Node.js Layer和Node.js应用程序的Opsworks堆栈。我想知道是否有人知道ubuntu 14.04LTS实例的哪个位置正在打印我的应用程序的控制台日志。我知道opsworks使用monit来运行我的应用程序,但我不确定它输出日志的位置。
谢谢!
答案 0 :(得分:7)
令人讨厌的是,为Opsworks上的Node.JS应用程序呈现的Monit配置并不会将输出发送到任何地方! Source for this claim。 (当我了解它时,这让我感到惊讶!)
我建议做的是覆盖该模板 - 请参阅the OpsWorks documentation on overriding templates:基本上您需要做的就是从Amazon复制粘贴Monit配置,但更改第2行以将输出重定向到文件,就像我在下面所做的那样这样:
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'"
答案 1 :(得分:1)
我通过以下方式找到了日志(类似于@ RyanWilcox&#39;)
......鲍勃的父亲是你父亲的父亲。
答案 2 :(得分:-2)
除非更改了console.log的行为,否则node
会将console.log
日志输出到应用程序的标准输出(stdout
)。
如果您在控制台中运行节点应用程序或使用ssh,则应该在那里看到日志。
否则,尝试将应用程序的stdout重定向到文件,这样即使在没有控制台的情况下运行它也可以看到它,这样:
node myapp.js > logfile
首选方法是用户Forever以确保您的应用程序始终处于启用状态,您可以按如下方式重定向输出(stdout和stderr):
/>forever -o forever.out -e forever.err myapp.js