【发布时间】:2016-02-08 14:22:31
【问题描述】:
我想为我的应用创建单独的日志。我创建了以下模块:
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?
【问题讨论】:
标签: ruby-on-rails ruby logging