W dniu 23.08.2013 09:44, Robert Schadek pisze:
On 08/23/2013 02:07 AM, Piotr Szturmaj wrote:
W dniu 22.08.2013 16:00, Robert Schadek pisze:
Docu:
http://burner.github.io/phobos/phobos-prerelease/std_logger.html
What about specifying log level at runtime, e.g.:
// set by the user at runtime
LogLevel userLogLevelForX;
log(userLogLevelForX, "X");
?
Any other Logger:
auto myCoolLogger = new XXXXLogger();
myCoolLogger.logLevel = LogLevel.Critical;
For the default Logger:
log.logLevel = LogLevel.Info;
I see, but isn't separate class instance for every log level a bit too
much? Setting log level before calling log() isn't (IMHO) good either
(think of multi-threaded logging).
My opinion is that LogLevel should not be encapsulated within Logger class.
Instead function overloading should be used (again IMO):
void log(string message);
void log(LogLevel level, string message);
So having separate classes for different loggers (sinks) is very nice,
but LogLevel should be specifiable for each message, no matter which
Logger class is used.
Then, each _compile-time_ specifiers like .Warning() or .Error() should
be just a syntactic sugar over log().