Node.js OpsWorks层控制台日志

6
我有一个Opsworks堆栈,其中包含一个Node.js层和Node.js应用程序。我想知道在Ubuntu 14.04LTS实例上,我的应用程序的控制台日志被打印到哪里。我知道Opsworks使用monit运行我的应用程序,但我不确定它将日志输出到哪里。
谢谢!
4个回答

7
很讨厌的是,针对Opsworks 上的Node.JS 应用程序渲染的Monit配置没有将输出发送到任何地方!此论点的源代码。(当我知道这一点时,我很惊讶!)
我建议你覆盖该模板——请参考OpsWorks文档中关于覆盖模板的内容:基本上,你只需要复制亚马逊的Monit配置,但需要更改第二行以将输出重定向到文件中,如下所示: 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'"

谢谢!是的,很奇怪他们没有将输出发送到任何地方。 - mu888
谢谢RyanWilcox!我已经在aws-cookbook-boilerplate中添加了类似的覆盖。 - Dário
谢谢您提供的信息 - 但是当您通过SSH连接到实例时,如何访问日志以及在哪里查找它呢?谢谢! - Leo
2
@Leo,日志将保存在/srv/www/你的应用名/current/log/production。 (或者你可以将该文件连接到AWS CloudWatch Log - 或类似的服务 - 以便你可以使用Web界面来监控)。 - RyanWilcox
非常感谢,@RyanWilcox - Leo

2
您可以在应用程序目录中找到它,然后您会发现这个路径 shared/log。
例如:/srv/www/my_app/shared/log。

1
我通过以下步骤找到了日志(类似于@RyanWilcox的评论):
  1. 在/srv/www/{APP NAME}/current/中找到了我的“当前”部署
  2. 列出文件后,我可以看到日志目录符号链接(日志应该是符号链接到类似/srv/www/{APP NAME}/shared/log的东西)
  3. 尝试cd到此目录时遇到了权限问题,因此我使用命令“sudo su”切换到超级用户而不需要密码,然后我就可以访问该目录了
  4. 最后,在日志目录中,我可以看到标准错误和标准输出的nodejs控制台日志

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


-2

除非更改了console.log的行为,否则node将输出console.log日志到应用程序的标准输出(stdout)。 如果您在控制台或使用ssh中运行您的node应用程序,则应在那里看到日志。 否则,尝试将应用程序的stdout重定向到文件中,以便即使在没有控制台的情况下运行它,也可以看到它,如下所示: node myapp.js > logfile

首选的方法是使用Forever来确保您的应用程序始终处于开启状态,并且您可以将输出(包括stdout和stderr)重定向如下:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接