1

我有一个 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 或插件(除非有一个非常好的理由。

谢谢!

4

3 回答 3

2

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

于 2009-10-30T05:29:13.723 回答
0

Advanced Rails Recipes Recipe 84 from @topfunky shows how to define a custom logger. He has some code in the environment config file (production would look like this): RAILS_ROOT/config/environments/production.rb:

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

I'd test that out instead of redefining the class variable as you have. He might have something on http://nubyonrails.com to check as well.

于 2009-06-22T05:49:59.260 回答
0
  1. “对我不起作用”是什么意思?我刚刚尝试了相同的代码并且它起作用了 - 创建了一个新的日志文件并在其中放入了一些文本。
  2. @@logger 是一个类变量,这是一个语言问题,而不是 Rails 的问题。我相信没有必要进一步解释:)
  3. 你可能打错了“function helloworld2” :)
于 2009-06-20T18:34:00.367 回答