Review: std.logger

ponce via Digitalmars-d digitalmars-d at puremagic.com
Tue Jul 22 05:09:36 PDT 2014


On Tuesday, 22 July 2014 at 10:24:33 UTC, linkrope wrote:
> On Tuesday, 22 July 2014 at 09:51:24 UTC, ponce wrote:
>> On Tuesday, 22 July 2014 at 08:44:06 UTC, linkrope wrote:
>>> On Tuesday, 22 July 2014 at 07:27:38 UTC, ponce wrote:
>>>> On Sunday, 20 July 2014 at 16:15:53 UTC, linkrope wrote:
>>>>> By the way: Instead of what I really need, I get a 
>>>>> NullLogger.
>>>>> I have no clue, why I never ever missed such an oddity.
>>>>
>>>> I asked for it. And I use it, because I write libraries that 
>>>> log warnings but don't forcefully require the users to 
>>>> provide a Logger if they don't want to.
>>>> And that way, I can still write "logger.warningf" without 
>>>> "if" everywhere.
>>>
>>> But then it's better to provide no logger (or at least no 
>>> logger for level warning) than an artificial NullLogger.
>>
>> My need is not "artificial", at least in my view.
>> Your opinion is different from mine. That's fine.
>> That's why we need someone to try to reconcile the many, many 
>> opinions about this.
>
> Not the need is artificial. For example, I have the need to 
> measure the performance of an application with and without 
> logging.
>
> I think, the solution is artificial. The obvious solution would 
> be to register no logger at all.

This only works if you have a global set of registered loggers 
(like your solution 
https://github.com/linkrope/log/blob/master/src/log.d#L133).
The obvious flaw is that prevents to have a different logging 
sink for different parts of a program. Now is it ever needed? 
Yes, for topical logging (eg. "I want only log messages from 
subsystem A", again real use case).

std.logger use the Composite pattern 
http://en.wikipedia.org/wiki/Composite_pattern instead to allow 
for a hierarchy.


More information about the Digitalmars-d mailing list