2010-06-16 294 views
0

我确定有人可以解释这一点。导致rails应用程序崩溃的原因是什么?

我们有一个已经生产了一年的应用程序。最近我们看到了难以登录系统的人们的支持请求数量增加。因为我们无法在开发过程中重新创建问题,因此我们决定在一个月内开启生产调试记录器。那是六月五号。

应用程序正常工作与上述变化,我们正在等待。

那么昨天我们注意到,日志文件变得越来越大,所以我们这个变化后作出的生产

config.logger = Logger.new("#{RAILS_ROOT}/log/production.log", 50, 1048576)

另一个变化,启动应用程序在处理一个特定的文件崩溃。代码这一行是

RAILS_DEFAULT_LOGGER.info "Payment Information Request: ", request.inspect

,你可以看到有一个逗号,而不是加号。这段代码是在3月推出的

问题是这样的:为什么现在应用程序失败?如果更改调试级别导致应用程序处理这行代码,它应该在5月6日开始失败!为什么今天。请有人帮助我们。我们是否错过了这里的明显?如果你没有答案,至少让我们知道我们并不是唯一一个疯子。

+0

我不认为一个加号会工作要么;如果它不是'RAILS_DEFAULT_LOGGER.info'付款信息请求:#{request.inspect}“'??? – 2010-06-16 09:41:12

+0

我这么说是因为request.inspect返回一个散列。你有一个字符串连接散列!你会得到一个'TypeError:无法将数组转换为字符串'。 – 2010-06-16 09:43:56

+0

@Shripad K:调用inspect返回一个字符串。 – Awgy 2010-06-17 15:16:44

回答

2

当您创建新的记录器时,它与原始记录器不同。

默认情况下,Rails使用ActiveSupport::BufferedLogger,它将毫无例外地采用第二个参数。我相信第二个参数被用作程序名称。 request.inspect返回一个字符串,所以它只是用它作为一个非常大的名字。

这个新的记录器只是Ruby核心中的一个标准Logger,当传递错误的参数数量时会引发异常。

+0

不错! Thnks。我知道我们是疯子:) – Addy 2010-06-17 11:09:05

0

岂不是

RAILS_DEFAULT_LOGGER.info "Payment Information Request: #{request.inspect}"

+0

他表示问题应该是:'RAILS_DEFAULT_LOGGER.info“付款信息请求:”+ request.inspect',这也会起作用。问题是:为什么原始(与',')失败? – Awgy 2010-06-16 15:21:45

相关问题