std.logger

Piotr Szturmaj bncrbme at jadamspam.pl
Fri Aug 23 01:30:57 PDT 2013


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().


More information about the Digitalmars-d mailing list