Kri*_*sta 5 logging activerecord ruby-on-rails activeresource ruby-on-rails-3.1
所以我有一个早期不需要ActiveRecord的应用程序 - 因此我们从应用程序中删除了ActiveRecord并将我们的日志记录格式化为:
在application.rb中:
class DreamLogFormatter < Logger::Formatter
SEVERITY_TO_COLOR_MAP = {'DEBUG'=>'32', 'INFO'=>'0;37', 'WARN'=>'35', 'ERROR'=>'31', 'FATAL'=>'31', 'UNKNOWN'=>'37'}
def call(severity, time, progname, msg)
color = SEVERITY_TO_COLOR_MAP[severity]
"\033[0;37m[%s] \033[#{color}m%5s - %s\033[0m\n" % [time.to_s(:short), severity, msg2str(msg)]
end
end
class ActiveSupport::BufferedLogger
def formatter=(formatter)
@log.formatter = formatter
end
end
Run Code Online (Sandbox Code Playgroud)
在development.rb
config.logger = Logger.new("log/#{Rails.env}.log")
config.logger.formatter = DreamLogFormatter.new
ActiveResource::Base.logger = Logger.new("log/#{Rails.env}.log")
ActiveResource::Base.logger.formatter = DreamLogFormatter.new
Run Code Online (Sandbox Code Playgroud)
注意:添加了ActiveResource记录器配置,因为我们希望我们的ActiveResource调用的URL输出如下:
GET http://localhost:2524/users/
--> 200 OK 239 (13.0ms)
Run Code Online (Sandbox Code Playgroud)
使用此配置进行日志记录为我们提供了一个很好的输出组合,即ActiveResource调用和我们自己的日志记录Rails.logger.
但是,我们需要将ActiveRecord添加回我们的应用程序,因为我们需要将会话存储从cookie存储更改为ActiveRecord存储.自从重新添加ActiveRecord以来,日志记录不再有效.
以前的日志输出:
Started GET "/audit/?key1=value1&key2=value2" for 0:0:0:0:0:0:0:1%0 at 2012-08-15 15:39:58 -0400
[15 Aug 15:39] INFO - Processing by AuditController#index as HTML
[15 Aug 15:39] INFO - Parameters: {"utf8"=>"?", "key1"=>"value1", "key2"=>"value2"}
[15 Aug 15:39] INFO - GET http://localhost:2524/api/users/jeff/prefs/?label=language
[15 Aug 15:39] INFO - --> 200 OK 151 (55.0ms)
[15 Aug 15:39] WARN - There is no user currently logged in - retrieving default theme.
[15 Aug 15:39] INFO - GET http://localhost:2524/api/users/jeff/prefs/?label=theme
[15 Aug 15:39] INFO - --> 200 OK 151 (35.0ms)
Run Code Online (Sandbox Code Playgroud)
注意:我真正喜欢这种格式的是每个请求都以一个Started GET <URL>或POST或PUT等开始记录- 然后是哪个控制器和函数正在进行处理以及发送的参数是什么.这对调试非常有用.同样,这种格式允许我们打印出我们自己的Rails.logger日志信息.
当前日志输出(使用ActiveRecord):
[20 Aug 11:40] INFO - GET http://localhost:2524/api/users/jeff
[20 Aug 11:40] INFO - --> 200 OK 199 (144.0ms)
[20 Aug 11:40] INFO - GET http://localhost:2524/api/users/jeff/prefs/?label=language
[20 Aug 11:40] INFO - --> 200 OK 148 (12.0ms)
[20 Aug 11:40] INFO - GET http://localhost:2524/api/users/jeff/prefs/?label=theme
[20 Aug 11:40] INFO - --> 200 OK 155 (15.0ms)
Run Code Online (Sandbox Code Playgroud)
基本上我们现在得到的是一个持续的URL调用流 - 它不记录来自的任何内容,Rails.logger并且不同的请求之间也没有分离 - 它实际上只是一个常量的URL和响应流.
我已尝试设置ActiveResource::Base.logger = ActiveRecord::Base.logger许多博客推荐,但这只是让事情变得更糟 - 它记录了几个URL,然后只是完全停止记录,除非它处于ERROR级别(并且我没有设置日志记录级别,所以它仍然应该默认情况下)
任何帮助或建议将不胜感激!! 谢谢
| 归档时间: |
|
| 查看次数: |
1668 次 |
| 最近记录: |