我正在使用Crystal编程语言编写应用程序。我喜欢Crystal的一个原因是其广泛的标准库,其中包括Logger
实用程序等。
日志记录语法如下所示:
require "logger"
log = Logger.new(STDOUT)
log.level = Logger::WARN
log.debug("Created logger")
log.info("Program started")
log.warn("Nothing to do!")
(Taken from Crystal documentation)
我遇到的问题是很难跟踪严重性级别。要么我必须将相同的Logger
对象传递给我想要登录的任何类/方法,要么我必须传递严重性枚举。
我该如何处理这个问题? Crystal社区中是否有可接受的解决方案?
答案 0 :(得分:3)
您可以将记录器放在类上,例如
module MyApp
class_getter logger = Logger.new.tap { |l| l.level = Logger::WARN }
end
然后将其与MyApp.logger.info("foo")
一起使用。
然而,这有一些缺点:
MyApp
)也许值得在Crystal回购中讨论这个问题。