【问题标题】:Custom rails environment log getting written to nginx error.log自定义 Rails 环境日志被写入 nginx error.log
【发布时间】:2012-10-31 13:03:21
【问题描述】:

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

【问题讨论】:

  • 可能;还要检查通常创建日志的目录的权限,它应该可由运行 rails 的用户写入。
  • 我检查了权限,它们看起来不错。同一文件夹中的new_relic.log 和delayed_job.log 文件具有相同的权限。 :(

标签: ruby-on-rails logging nginx passenger


【解决方案1】:

这是一个老问题,但我刚刚遇到了同样的问题,并想分享为我解决的问题,以防它帮助其他遇到此问题的人。

在我的例子中,我使用的是 rails_12factor gem(因为我曾经在 Heroku 上部署过我的应用程序),这会导致所有日志记录都转到标准输出。这导致它全部被转储到 nginx_error.log 中。我能够完全删除 gem 来修复它,因为我不再将 Heroku 用于应用程序,但如果您需要支持 Heroku 部署,您可以添加某种配置,以便仅在该上下文中需要 rails_12factor。

【讨论】:

    【解决方案2】:

    尝试添加类似的东西

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

    致您的config/environments/staging.rb 另外,您也许应该使用 auto_flushing 选项,关于configuration 的rails 指南,说它在生产环境中已关闭,我不知道为什么。请参阅 BufferedLogger 文档here。 在我看来,这不是完美的解决方案,但看起来可行。

    【讨论】:

      【解决方案3】:

      登录 nginx 你有:

      error_log 有一个问题:

      如果您将其设置为 debug,而您的 nginx 未使用 --with-debug 标志编译,它将落入默认的 error.log 位置。

      使用nginx -V 命令检查你的 nginx 编译的标志

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        • 1970-01-01
        相关资源
        最近更新 更多