自定义rails环境日志被写入nginx error.log

时间:2012-11-12 03:37:08

标签: ruby-on-rails logging nginx passenger

我的应用程序有一个名为staging的自定义环境。由于某种原因,没有创建staging.log文件,并且我假设要写入的所有内容都会出现在nginx error.log文件中。是否有我缺少的配置选项?

3 个答案:

答案 0 :(得分:3)

这是一个老问题,但我遇到了同样的问题,想要分享为我修复的问题,以防万一其他人遇到这个问题。

在我的情况下,我使用 rails_12factor gem(因为我的应用程序在Heroku上部署了一次),这导致所有日志记录转到stdout。这导致它全部被转储到nginx_error.log中。我能够完全删除gem以修复它,因为我不再使用Heroku作为应用程序,但是如果你需要支持Heroku部署,你可以添加某种配置,以便只在该上下文中需要rails_12factor。

答案 1 :(得分:0)

尝试添加类似

的内容
c = ActiveSupport::BufferedLogger.new("log/staging.log")
c.auto_flushing = true
config.logger = c

config/environments/staging.rb 你也许应该玩auto_flushing选项,关于configuration的rails指南,说它在生产环境中关闭,我不知道为什么。请参见BufferedLogger docs here。 它看起来不像是完美的解决方案,但看起来很有效。

答案 2 :(得分:0)

登录nginx你有:

error_log有一个问题:

如果你将它设置为debug,而你的nginx没有使用--with-debug标志进行编译,那么它将通过默认的error.log位置。

使用nginx -V命令

检查您的nginx编译的标志是否已编译