Reputation: 1214
I'm writing an application in the Crystal programming language. One of the things I like about Crystal is its extensive standard library, which includes things like a Logger
utility.
The logging syntax looks like this:
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)
The problem I'm running into is that it is hard to keep track of severity levels. Either I have to pass the same Logger
object to whatever class/method I want logging in, or I have to pass the severity enum.
How should I deal with this issue? Is there an accepted solution in the Crystal community?
Upvotes: 2
Views: 398
Reputation: 3175
You could place the logger on a class, for example
module MyApp
class_getter logger = Logger.new.tap { |l| l.level = Logger::WARN }
end
Then use it with MyApp.logger.info("foo")
.
However this has a few drawbacks:
MyApp
)Maybe it would be worth opening an issue on the Crystal repo to discuss this.
Upvotes: 3