我正在用 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 社区有公认的解决方案吗?
最佳答案
例如,您可以将记录器放在一个类上
module MyApp
class_getter logger = Logger.new.tap { |l| l.level = Logger::WARN }
end
然后将其与MyApp.logger.info("foo")
一起使用。
但是这有一些缺点:
- 日志记录级别是全局的,您无法按类对其进行编辑。
- 无法登录库(他们看不到
MyApp
)
也许值得在 Crystal 存储库上开一个问题来讨论这个问题。
关于logging - Crystal 中的全局日志级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599378/