【问题标题】:Rails production.log file is emptyRails production.log 文件为空
【发布时间】:2013-03-04 20:35:12
【问题描述】:

我使用的是 Rails 2.3.13,在我的 environments/production.rb 中,我有:

config.log_level = :info
RAILS_DEFAULT_LOGGER = SyslogLogger.new('mysite-platform-production')

然而我的log/production.log 是空的。为什么会这样?

【问题讨论】:

  • 你没有记录任何东西?
  • 日志中不应该至少有命中的路由吗?
  • log/production.log 是否有适当的写入权限?
  • -rw-rw-rw- 1 www-data www-data 0 2012-05-02 18:52 production.log - 是的。看起来是适当的权限
  • 您是否使用生产标志启动了应用服务器?另外,第二行是否应该将您的日志重定向到该文件?

标签: ruby-on-rails


【解决方案1】:

您正在实例化 SyslogLogger,因此您的日志记录将进入 syslog(在大多数情况下,在 Unix 系统上作为 /var/log/syslog 中的文件提供)而不是日志文件.您传递给记录器的参数 (mysite-platform-production) 是 syslog 使用的标识符,而不是文件名。

如果要记录到日志目录中的文件,则必须按如下方式设置记录器:

RAILS_DEFAULT_LOGGER = Logger.new('log/production.log')

但是:我很确定你实际上不必明确地这样做,但它是由 Rails 默认完成的,所以我建议不要在你的代码中设置 RAILS_DEFAULT_LOGGER 和你应该得到一个隐式登录到 log/production.log 的记录器......

【讨论】:

  • 我有这台机器的 4 个不同的实例在运行,它在 AWS 负载均衡器的后面——所以我完全不确定日志写在哪里
  • 日志记录到每台机器的系统日志中。 syslog 守护进程很可能会将其记录到文件 (/var/log/syslog) 中,但也可以将其配置为将其转发到另一台机器……更多信息请参见 en.wikipedia.org/wiki/Syslog有关系统日志的信息。
  • 但回到你的问题:你希望你的日志条目去哪里?到每台机器上的app目录下的一个文件?
【解决方案2】:

根据您设置记录器的方式,您应该找到一个名为“mysite-platform-production”的文件,不是 production.log,它会在根目录中 > 你的项目。如果你想在 'log/mysite-platform-production.log' 中找到它,你必须这样做:

RAILS_DEFAULT_LOGGER = SyslogLogger.new('log/mysite-platform-production.log')

【讨论】:

  • 系统日志记录器记录到文件中,它只是将日志发送到本地系统日志守护程序,然后由它自己决定将日志写入或发送到哪里。 logger初始化中的参数没有指定文件路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 2014-03-07
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
相关资源
最近更新 更多