我应该如何从同一个类中的其他方法访问记录器?

时间:2016-08-14 15:08:47

标签: ruby logging scope

我正在尝试将记录器添加到我的ruby应用程序中。我现在设置它的方式,记录器是在我的类的初始化方法中创建的。然后我尝试从同一个类中的其他方法访问它,但是我得到了一个范围错误,特别是:

undefined local variable or method "logger" (NameError)

这是指我第一次调用logger方法。如何从其他方法访问我以前创建的记录器?

以下是完整代码:

gist

3 个答案:

答案 0 :(得分:2)

它不应该是实例变量吗?尝试将记录器更改为@logger,以便可以在类实例中访问它。

答案 1 :(得分:1)

我在搜索了一些之后解决了自己的问题。对于有类似问题的任何人来说,添加记录器的最佳方法是在它自己的类中,结构如下:

class Log
    def self.log
        if @logger.nil?
            # CREATE LOGGER HERE
        end
        @logger
    end
end

答案 2 :(得分:1)

您也可以这样做: @logger || = Logger.new(' logfile.log')

那个|| =与if语句相同,如果它是nil则只创建该变量。