创建自定义Rails记录器

时间:2013-01-18 14:18:41

标签: ruby-on-rails ruby ruby-on-rails-3.2

这已经过时了吗? http://guides.rubyonrails.org/debugging_rails_applications.html 我一步一步地跟着它,

部分'2.1什么是记录器?'

它说明了如何创建自定义记录器。

1)您可以在environment.rb或任何环境文件中指定备用记录器:

Rails.logger = Logger.new(STDOUT)
Rails.logger = Log4r::Logger.new("Application Log")

我把这段代码放在我的environment.rb文件中,我得到了这个:

  

未初始化的常量Log4r(NameError)

..然后它说'或者在初始化程序部分,添加以下任何内容:'

config.logger = Logger.new(STDOUT)
config.logger = Log4r::Logger.new("Application Log")

我的environment.rb文件中没有初始化部分! 我得到同样的错误!

它说'如果你愿意,你也可以替换Log4r等其他记录器。' 为什么有人想替换现有的记录器?

我从environment.rb文件中删除了Rails.logger = Log4r::Logger.new("Application Log")。 它似乎正在工作,但我期待在日志/目录中创建一个文件,但没有。这是我的enviroment.rb文件:

# Load the rails application
require File.expand_path('../application', __FILE__)

Rails.logger = Logger.new('Application Log')

# Initialize the rails application
MyApp::Application.initialize!

帮助?请问一些解释?

2 个答案:

答案 0 :(得分:5)

您可以使用以下命令全局设置Rails记录器:

Rails.logger = ...

或者您可以将其放入环境文件中,例如在config/environments/development.rb

MyApp::Application.configure do
  config.logger = ...
end

接下来,Log4r是一个单独的gem,没有Rails附带。如果要使用它,请将其添加到Gemfile:

gem "log4r", "~> 1.1.10"
  

为什么有人想替换现有的记录器?

因为记录器具有不同的功能集。您可能希望使用自定义记录器将日志上载到外部服务,处理它等。

答案 1 :(得分:0)

您需要在application.rb中要求log4r。我假设你已经安装了宝石。然后在application.rb

 require 'log4r'