Kyl*_*cot 5 ruby-on-rails ruby-on-rails-3
我试过调用两个logger.debug,Rails.logger.debug但没有任何东西输出到development.log文件.关于什么事情的任何想法?
更新
我还应该注意,我是从控制器调用它,并且其他信息(如SQL查询)将输出到日志文件中.
源代码
https://github.com/kyledecot/skateparks-web
的Gemfile
source 'http://rubygems.org/'
gem 'rails', '3.0.7'
gem 'rake', '~> 0.8.7'
gem 'devise'
gem 'omniauth'
gem 'flash_cookie_session'
gem 'carrierwave'
gem 'mini_magick'
gem 'barometer'
gem 'gdata_19', :require => 'gdata'
gem 'google_places'
gem 'fleakr'
gem 'resque'
gem 'nokogiri'
gem 'decent_exposure'
gem 'cancan'
gem 'friendly_id'
gem 'breadcrumbs_on_rails'
gem 'defensio'
gem 'twitter'
gem 'thinking-sphinx', :require => 'thinking_sphinx'
gem 'ts-resque-delta', '1.0.0', :require => 'thinking_sphinx/deltas/resque_delta'
gem 'mime-types', :require => 'mime/types'
gem 'vpim'
gem 'will_paginate', '~> 3.0.pre2'
gem 'acts_as_geocodable'
gem 'acts_as_audited', '2.0.0.rc7'
gem 'passenger'
gem 'paper_trail'
gem 'thin'
gem 'compass', '>= 0.11.1'
gem 'guard-compass'
gem 'redcarpet'
gem 'mysql2', '0.2.7'
gem 'placemaker'
group :development, :test do
gem 'sqlite3'
gem 'capybara'
gem 'launchy'
gem "rspec-rails"
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
gem 'guard-rspec'
gem 'guard-bundler'
gem 'guard-delayed'
gem 'factory_girl'
gem 'rspec'
end
group :production do
end
Run Code Online (Sandbox Code Playgroud)
enviornment.rb
require File.expand_path('../application', __FILE__)
Skateparks::Application.initialize!
ActiveRecord::Base.logger.level = Logger::INFO
Run Code Online (Sandbox Code Playgroud)
ImagesController
def server
logger.warn "WARN!" # nothing
logger.info "INFO!" # nothing
logger.debug "DEBUG!" # nothing
puts Rails.logger.inspect # shows
puts "PUTS!" # shows
end
Run Code Online (Sandbox Code Playgroud)
记录输出w/rails s
#<ActiveSupport::BufferedLogger:0x000001058867a0 @level=0, @buffer={}, @auto_flushing=1, @guard=#<Mutex:0x000001058866b0>, @log=#<File:/Users/Kyle/Desktop/skateparks-web/log/development.log>>
PUTS!
Started GET "/images/fd3b38315c30532b3a55bb84d35e5925/34_m.png" for 127.0.0.1 at 2011-06-29 03:41:50 -0400
User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
Run Code Online (Sandbox Code Playgroud)
Zab*_*bba 10
Viget Labs已从其回购中删除了可记录的gem( https://github.com/vigetlabs/loggable )
您应用中的某些gem正在使用vigetlabs/loggable gem.看Gemfile.lock,似乎"fleakr"宝石正在使用它.
我注意到虽然
logger.info "hello"不起作用,但Rails.logger.info "hello"工作得很好.
它似乎在为loggable宝石以某种方式重新定义了记录仪方法采用什么都不做LoggerStub:
class LoggerStub
[:debug, :error, :fatal, :info, :warn].each do |method|
class_eval <<-CODE
def #{method}(message); nil; end
CODE
end
end
Run Code Online (Sandbox Code Playgroud)
发生的事情是,loggable gem定义了一个类变量和一个名为的实例变量logger,并且.info在其中一个上调用了etc方法.而这些方法只是回归nil.
我知道这是一个部分答案(因为它不是一个完整的解决方案),但这应该是很好的信息,让你开始寻找合适的解决方案.
看看这些文件:
UPDATE
添加..
class ActionController::Base
self.class.logger = Rails.logger
end
Run Code Online (Sandbox Code Playgroud)
..应该强制覆盖loggable对记录器的赋值,事情应该正常工作.我认为同样适用class ActiveRecord::Base.
但当然,这是一个无法解决潜在问题的蛮力解决方案.对于真正的"修复",您需要进一步深入研究fleakr或loggable,并在问题页面上询问这些问题.
UPDATE
看看你是否可以让fleakr gem使用来自mediashelf的loggable fork:该fork应该使用默认的Rails记录器(如果可用).
| 归档时间: |
|
| 查看次数: |
5911 次 |
| 最近记录: |