Node.js OpsWorks图层控制台日志

我有一个Opsworks堆栈与Node.js图层和Node.js应用程序。 我想知道是否有人知道在Ubuntu 14.04LTS实例从我的应用程序的控制台日志正在打印到哪里。 我知道opsworks使用monit来运行我的应用程序,但我不知道它在哪里输出日志。

谢谢!

       

网上收集的解决方案 "Node.js OpsWorks图层控制台日志"

如此令人讨厌的是,在Opsworks上为Node.JS应用程序呈现的Monitconfiguration不会将输出发送到任何地方! 这个索赔的来源 。 (当我知道的时候,这让我很吃惊!)

我推荐的做法是覆盖该模板 – 请参阅覆盖模板的OpsWorks文档 :基本上所有您需要做的就是复制粘贴来自Amazon的Monitconfiguration,但更改第2行以将输出redirect到文件,如下所示:

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

我通过执行以下操作(类似于@ RyanWilcox的评论)find了日志:

  1. 我发现我的“当前”部署在/ srv / www / {APP NAME} / current /
  2. 列出文件,我可以看到日志目录符号链接(日志应符号链接到/ srv / www / {APP NAME} /共享/日志
  3. 我遇到了一个权限问题试图cd到这个目录,所以我切换到超级用户没有密码使用命令“sudo su”,然后我可以访问目录
  4. 最后在logs目录中,我可以看到nodejs控制台loggingSTDERR和STDOUT

…而鲍勃的父亲是你父亲的父亲。

你可以find它的应用程序目录,那么你会发现这个path共享/日志

例如: /srv/www/my_app/shared/log

除非console.log的行为被改变,否则node将输出console.log日志到应用程序的标准输出( stdout )。 如果您正在控制台或使用ssh运行节点应用程序,则应该在那里看到日志。 否则,请尝试将应用程序的stdoutredirect到一个文件,以便即使在没有控制台的情况下运行该文件,也可以看到它: node myapp.js > logfile

一个首选的方法是永远用户,以确保你的应用程序不断开启,你可以redirect你的输出(stdout和stderr),如下所示:

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