Review: std.logger

ponce via Digitalmars-d digitalmars-d at puremagic.com
Tue Jul 22 02:43:59 PDT 2014


On Tuesday, 22 July 2014 at 07:55:04 UTC, Dragos Carp wrote:
>>
>> I'm in 100% disagreement. If you don't add the f suffix, users 
>> will write:
>>
>> info(<user provided string that could contain format>);
>>
>> This is a crash if the user provided string happens to 
>> contains "%s".
>> I wouldn't use such an API which makes format bugs hard to 
>> find.
>>
>
> It does the right thing... there is an overload: without 
> additional arguments, the first argument (not necessary a 
> string) is not a format string.
>

Now if write a bug:
warning("there was an error because the file %s is missing!");

and I forgot the argument, no problem, it will run without 
errrors despite I made one. This is not an improvement over 
writef.

(this particular bug came up in DUB among others, and my last 
example was a real case too in production software where the 
users would call things with "%" in the names)

Two different operations conceptually => two names.

>>
>>
>>> 2. No support for 24/7 (server) applications
>>>
>>> In my opinion, I really need logging for applications that 
>>> possibly run forever.
>>> With the FileLogger, the file will grow forever.
>>> That's why most other frameworks provide something like a 
>>> RollingFileLogger or some "logrotate-aware" FileLogger.
>>
>> Do you realize rolling loggers are not there because they are 
>> supposed to be in another layer as subclasses of Logger?
>>
>
> Contrary to the NullLogger, writing a rolling logger is a 
> non-trivial task.

NullLogger is there precisely because it's trivial and needed.
Of course a rolling logger is not that trivial, but std.logger is 
there to be orthogonal and a foundation not providing everything 
non-trivial.



More information about the Digitalmars-d mailing list