我正在开发一种将用于rails应用程序的rubygem。在这个rubygem我需要记录一些信息(警告,错误......)。
我看到了一些宝石,比如logging,但显然我不需要配置日志输出(stdout,某些文件)。
我的rails应用程序将消息记录在文件中。所以,我的问题是:有没有办法让我的gem使用我的rails应用程序使用的相同日志配置?或者我的gem会根据自己的配置发送日志吗?
答案 0 :(得分:8)
您可以直接使用Rails.logger
,如果您的gem始终只在Rails应用程序中使用,则该Rails.logger
有效。您也可以为gem命名空间定义一个记录器,如果定义则默认为Logger.new(STDOUT)
,如果不是,则为module MyGem
def self.logger
@@logger ||= defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
end
def self.logger=(logger)
@@logger = logger
end
end
,以及作者,因此它可以覆盖:
MyGem.logger.debug "it works"
无论如何,你都会这样使用它:
MagicalRecord.saveWithBlock({ (moc: NSManagedObjectContext!) in
//parsing inquiries
for (index: String, jsonInquiry: JSON) in json["data"]["inquiries"] {
var idInquiry = jsonInquiry["id_inquiry"].int!
var inquiry: Inquiry
//trying to find existing entity
if let existingInquiry = Inquiry.MR_findFirstByAttribute("id", withValue: idInquiry, inContext: moc) as? Inquiry {
inquiry = existingInquiry
println("fetching existing inquiry: \(idInquiry)")
} else {
inquiry = Inquiry.MR_createInContext(moc) as! Inquiry
println("creating new inquiry: \(idInquiry)")
}
...
}
}