Node.js OpsWorks层控制台日志
我有一个带有Node.js层和Node.js应用程序的Opsworks堆栈。我想知道是否有人知道ubuntu 14.04LTS实例上我的应用程序的控制台日志打印到哪里。我知道opsworks使用monit来运行我的应用程序,但我不确定它将日志输出到哪里Node.js OpsWorks层控制台日志,node.js,console.log,aws-opsworks,monit,Node.js,Console.log,Aws Opsworks,Monit,我有一个带有Node.js层和Node.js应用程序的Opsworks堆栈。我想知道是否有人知道ubuntu 14.04LTS实例上我的应用程序的控制台日志打印到哪里。我知道opsworks使用monit来运行我的应用程序,但我不确定它将日志输出到哪里 谢谢 除非更改了console.log的行为,节点将console.log日志输出到应用程序的标准输出(stdout)。 如果您在控制台中运行节点应用程序或使用ssh,则应该在那里看到日志。 否则,请尝试将应用程序的标准输出重定向到一个文件,这样
谢谢 除非更改了console.log的行为,
节点将console.log
日志输出到应用程序的标准输出(stdout
)。
如果您在控制台中运行节点应用程序或使用ssh,则应该在那里看到日志。
否则,请尝试将应用程序的标准输出重定向到一个文件,这样即使在没有控制台的情况下运行,也可以看到它,方法如下:
节点myapp.js>日志文件
首选的方法是让用户确保您的应用程序一直处于打开状态,并且您可以按如下方式重定向输出(stdout和stderr):
/>forever -o forever.out -e forever.err myapp.js
令人恼火的是,在Opsworks上为Node.JS应用程序呈现的Monit配置没有将输出发送到任何地方。(当我知道这件事时,我很惊讶!)
我建议您重写该模板—请参阅:基本上,您只需从Amazon复制粘贴Monit配置,但更改第2行以将输出重定向到文件,如下所示:
start program=“/bin/bash-c”cd/current;source/shared/app.env;/usr/bin/env PATH=$PATH:/usr/local/bin PORT=NODE\u PATH=/current/NODE\u modules:/current/usr/local/bin/NODE&>/current/log/production.log”
我通过以下操作找到了日志(类似于@RyanWilcox的评论):
我在/srv/www/{APP NAME}/current中找到了我的“当前”部署/
在列出文件时,我可以看到日志目录symlink(日志应该是
符号链接到/srv/www/{APP NAME}/shared/log之类的内容
我试图将cd刻录到此目录时遇到权限问题,因此
使用命令“sudo”切换到无密码的超级用户
然后我就可以访问目录了
最后在logs目录中,我可以看到nodejs控制台日志
对于STDERR和STDOUT
…而Bob的父亲是您父亲的父亲。您可以在应用程序目录中找到它,然后您将找到此共享路径/log
例如:/srv/www/my_app/shared/log
谢谢!是的,他们没有将输出发送到任何地方,这很奇怪。谢谢RyanWilcox!我添加了一个类似的覆盖。谢谢。但是,当你SSH到实例时,你如何访问日志以及在哪里查找日志?谢谢!@Leo日志将保存在/srv/www/YOUR app NAME/current/log/production。(或者我所做的,将该文件连接到AWS CloudWatch日志或类似服务的监控下,以便您可以使用web UI。非常感谢,@RyanWilcox