我试图同时调用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
enviornment.rb
require File.expand_path('../application', __FILE__)
Skateparks::Application.initialize!
ActiveRecord::Base.logger.level = Logger::INFO
ImagesController
def server
logger.warn "WARN!" # nothing
logger.info "INFO!" # nothing
logger.debug "DEBUG!" # nothing
puts Rails.logger.inspect # shows
puts "PUTS!" # shows
end
rails s
输出w/ 日志
#<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
发布于 2011-06-29 08:48:19
更新:
Viget已经从他们的回购( https://github.com/vigetlabs/loggable )中删除了这个可分割的宝石。
应用程序中的一些创业板正在使用vigetlabs/loggable gem。看看Gemfile.lock
,看起来"fleakr“创业板正在使用它。
我注意到,虽然
logger.info "hello"
不工作,但Rails.logger.info "hello"
工作得很好。
似乎可日志的创业板正在以某种方式重新定义记录器方法,使用LoggerStub
什么也不做。
class LoggerStub
[:debug, :error, :fatal, :info, :warn].each do |method|
class_eval <<-CODE
def #{method}(message); nil; end
CODE
end
end
正在发生的事情是,可调用的gem定义了一个名为logger
的类变量和实例变量,其中一个调用了.info
等方法。这些方法只返回nil
。
我知道这是一个部分的答案(因为它不是一个完整的解决方案),但这应该是一个很好的信息,让您开始寻找合适的解决方案。
还请看一下这些文件:
更新
加上..。
class ActionController::Base
self.class.logger = Rails.logger
end
..should强制重写loggable对记录器的分配,并且事情应该正常工作。我想对class ActiveRecord::Base
来说也是如此。
但当然,这是一个蛮力的解决方案,不能解决根本问题。要进行真正的“修复”,您需要深入研究fleakr或loggable,并可能在问题页上询问这些宝石的问题。
更新
查看是否可以让fleakr使用从纵横来的叉子:如果可用的话,那个叉子应该使用默认的Rails记录器。
发布于 2011-06-29 06:45:54
如果你打电话:叫"/images/92131721fcf3b8beb12b6e55014b9976/41_m.png“
.这不是要在图像控制器中显示动作,而不是:index吗?
(当然,如果不知道你的路线文件,我就无法确定.)
https://stackoverflow.com/questions/6516429
复制相似问题