如何在Ruby on Rails中为自己的rake任务使用自定义日志?

时间:2009-06-20 17:37:54

标签: ruby-on-rails rake logging

我有一个rake任务调用这样的函数:

namespace :blah do
    task :hello_world => :environment do
       logger.info("Hello World")
       helloworld2
    end
end

def helloworld2
   logger.info("Hello Again, World")
end

我希望日志输出到自定义日志,我真的不希望每次进行函数调用时都要传递日志引用。我在某处找到了这个(再也找不到了):

def logger
  @@logger ||= Logger.new("#{RAILS_HOME}/log/blah.log")
end

但这对我不起作用,我不确定它甚至做了什么,因为我很久以前就抓住了代码并且直到现在才使用它。我无法在google(试用+“@@”rails)上搜索@@以查看其功能。对这个问题的任何帮助都会很棒。我希望有一个快速的解决方案,而不必安装gem或插件(除非有一个非常好的理由。

谢谢!

3 个答案:

答案 0 :(得分:2)

rake禁用生产模式下的日志记录。如果要记录,请确保您正在开发模式下运行

答案 1 :(得分:0)

  1. 你的意思是“对我不起作用”?我只是尝试了相同的代码并且它有效 - 创建了一个新的日志文件并在其中添加了一些文本。
  2. @@ logger是一个类变量,它是一个语言问题,而不是Rails的一个。我相信没有必要进一步解释:)
  3. 您可能错误地输入“function helloworld2”:)

答案 2 :(得分:0)

高级Rails食谱来自@topfunky的食谱84显示了如何定义自定义记录器。他在环境配置文件中有一些代码(生产看起来像这样):RAILS_ROOT/config/environments/production.rb

config.logger = RAILS_DEFAULT_LOGGER = Logger.new(config.log_path)

我会测试它,而不是像你一样重新定义类变量。他也可能会在http://nubyonrails.com上查看一些内容。