Crystal中的全局日志级别
问题描述:
我正在用Crystal编程语言编写应用程序。我喜欢Crystal的其中一件事是其广泛的标准库,其中包括诸如Logger
实用程序之类的内容。Crystal中的全局日志级别
日志记录语法如下:
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社区中是否有可接受的解决方案?
答
你可以把记录器上的一类,例如
module MyApp
class_getter logger = Logger.new.tap { |l| l.level = Logger::WARN }
end
然后用MyApp.logger.info("foo")
使用它。
但是,这有一些缺点:
- 日志记录级别是全球性的,你不能按类进行编辑。图书馆内
- 记录是不可能的(他们不能看到
MyApp
)
也许这将是值得的水晶回购开放的问题进行讨论。