【发布时间】:2013-07-19 15:24:13
【问题描述】:
我正在开发一个 Rails 4 项目,当我致电 Rails.logger.debug "test" 时,我的开发日志中似乎没有任何内容我尝试过在线搜索,但我觉得我没有做太多进步。我将如何设置记录器并告诉它写入我的开发日志文件?
任何帮助将不胜感激。
【问题讨论】:
我正在开发一个 Rails 4 项目,当我致电 Rails.logger.debug "test" 时,我的开发日志中似乎没有任何内容我尝试过在线搜索,但我觉得我没有做太多进步。我将如何设置记录器并告诉它写入我的开发日志文件?
任何帮助将不胜感激。
【问题讨论】:
我认为你应该在你的方法中这样使用它。在这里结帐section 2.3
def your_method
logger.debug "This is from debug"
logger.info "This is from info"
end
【讨论】:
rails 有一个简单的日志记录机制
从控制器/模型内部
logger.info 'some info'
logger.error 'some error'
等等
在这些 Rails 的部分之外,在普通旧 Ruby 对象(如服务对象、库对象)中,您可以轻松访问相同的默认记录器
用于导轨
logger = RAILS_DEFAULT_LOGGER
logger.info 'some info'
logger.error 'some error'
用于导轨 > 3
logger = Rails.logger
logger.info 'some info'
logger.error 'some error'
【讨论】:
如果您想在普通旧 Ruby 对象中使用 Rails.logger 或 ServiceObject,则需要手动包含它:
class MyService
def initialize(foo)
@logger = Logger.new(STDOUT)
@foo = foo
end
def call
do_something
end
private
def do_something
@logger.debug { "do_something called! With #{@foo.class} class" }
end
end
结果:
MyService.new(Bar.new).call
# [2018-01-27T00:17:22.167974 #57866] DEBUG -- : do_something called! With Bar class
【讨论】:
如果您的日志文件中没有记录器输出,请检查您的环境文件中设置的 log_level 值(config/environments/development.rb,...) 它不应该在那里(默认为 :debug)或
config.log_level = :debug
应该设置。其他值是:
:debug, :info, :warn, :error, :fatal, :unknown
更多信息在这里: https://guides.rubyonrails.org/debugging_rails_applications.html 第 2.2 节日志级别
【讨论】: