4
我想爲我的應用程序有單獨的日誌。我創建了以下模塊:從模塊設置類變量
module MyApp
module MyLog
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def logger
@@logger ||= Logger.new("#{Rails.root}/log/#{self.name.underscore}.log")
end
end
end
end
然後,在任何我的模型,我可以添加:
include MyApp::MyLog
,並把它作爲(日誌文件中會出現.../log/cat.log
):
Cat.logger.info 'test'
我試過在Cat
和Dog
型號上使用這種方法included
,我有這個結果:
Cat.new.logger
# => #<Logger:0x007fe4516cf0b0 @progname=nil, ... @dev=#<File:/.../log/cat.log>, ...
Dog.new.logger
# => #<Logger:0x007fe4516cf0b0 @progname=nil, ... @dev=#<File:/.../log/cat.log>, ... (the same)
如果我首先嚐試使用我的記錄爲Dog
模型,我將有一個名爲dog
(/dog.log
)的日誌文件。
如何使用正確的初始化記錄器爲每個類設置類變量@@logger
?