2

我使用 Phusion Passenger 来运行 Rails 应用程序。我在 nginx 目录中有一个配置文件,所以当我重新启动 nginx 时,我的 Rails 应用程序正在运行。

但是,我的应用程序有一些问题,所以我想查看控制台的错误输出。如果我在 Rails 应用passenger start程序目录中使用显式命令运行 Rails 应用程序,则不会发生错误。

因此,当 Rails 应用程序与 nginx 一起运行时,我需要从控制台获取实时输出。

./public/downloads/...问题是:Rails 公共目录(即)内的我的下载目录中没有写入任何文件。我使用以下方法编写文件:

open(file_path, 'wb') do |file| 
 ...
 file << open(url)
 ...
end

如果有人知道为什么在运行时会出现错误passenger start,而不是运行sudo /opt/nginx/sbin/nginx -s reload,那么了解原因会很棒。

更新:

我看到它正在写入log/passenger.3000.log. 但是是否可以将某些终端直接连接到应用程序,因为乘客已连接?

更新 2:

错误的!当log/passenger.3000.log我使用passenger start. 但这log/development.log是我搜索的那个。并且可以使用tail -f log/development.log或观看文件watch tail log/development.log

4

2 回答 2

3

您可以通过转到生产服务器上的 app 文件夹来实时查看日志文件并执行tail -f log/production.log.

您还可以按照此处stdout的建议覆盖生产环境文件中的应用程序:

std_out = File.new(RAILS_ROOT + "/log/stdout.log","a")
$stdout.reopen(std_out)
于 2013-10-16T12:02:17.377 回答
1

乘客将日志条目(包括应用程序的输出)发送到 Web 服务器的日志文件。

例如,对于 Nginx,这是全局 Nginx 错误日志文件。您可以改为配置乘客以使用乘客日志文件指令将日志输出发送到特定文件。

更多信息:https ://www.phusionpassenger.com/library/admin/nginx/log_file/

您可以使用 Nginx 的error_log指令设置此输出的目标。它可以直接发送到远程系统日志服务器,例如 Papertrail 的。

于 2015-10-13T20:49:31.443 回答