Node.js OpsWorks层控制台日志

时间:2015-01-28 02:00:28

标签: node.js console.log aws-opsworks monit

我有一个带有Node.js Layer和Node.js应用程序的Opsworks堆栈。我想知道是否有人知道ubuntu 14.04LTS实例的哪个位置正在打印我的应用程序的控制台日志。我知道opsworks使用monit来运行我的应用程序,但我不确定它输出日志的位置。

谢谢!

3 个答案:

答案 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;)

  1. 我找到了我的&#34;当前&#34;在/ srv / www / {APP NAME} / current /
  2. 中部署
  3. 列出文件,我可以看到日志目录符号链接(日志应该是 符号链接到/ srv / www / {APP NAME} / shared / log
  4. 我遇到了尝试cd到这个目录的权限问题,所以我 使用命令&#34; sudo切换到没有密码的超级用户 苏&#34;然后我可以访问目录
  5. 最后在logs目录中,我可以看到nodejs控制台日志 对于STDERR和STDOUT
  6. ......鲍勃的父亲是你父亲的父亲。

答案 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