On Tuesday, 22 July 2014 at 21:52:09 UTC, linkrope wrote:
Sorry, but at the first contact with the implementation (the one with 'genDocComment' and 'buildLogFunction' from months ago) I was scared away. (It's better now.)

There was no need, even read that, for implementing a FileRotateLogger


I feared that if I criticize the 'mixin' sequences you would ask something like "suggestions?" ;-) So, I made this experiment to provide an answer. Now, I can suggest: try something like this:

    alias trace = log!(LogLevel.trace);
    alias info = log!(LogLevel.info);
    alias warn = log!(LogLevel.warn);
    alias error = log!(LogLevel.error);
    alias fatal = log!(LogLevel.fatal);

(see https://github.com/linkrope/log/blob/master/src/log.d)

I did and I had to mod it quite a bit to make it work with default logging instance logging and an more elaborate api


Controversial conditional logging
----------------------------
The only advantage of
    tracec(condition, "passed");
over
    if (condition) trace("passed");
would be, that a costly evaluation of the condition is omitted when there is no trace logger.
That's why the std.log proposal had 'when(lazy bool now)'.

First, I was puzzled about your argument that LOG_FIRST_N or LOG_EVERY_N would be no problem with the '...c' functions. But a look at the implementation confirmed that the std.logger has no lazy evaluation of the condition; discarding the only advantage.

passing a bool as a delegate that is the first thing that gets evaluated does not sound right.


Sets of log levels
--------------
No!
Of course, I can log (trace | info) to stdout, warn.orHigher to stderr, and for instance info.orHigher to some file.

Simplicity
--------
"The simplest way to achieve simplicity is through thoughtful reduction."

We started with tango.util.log (best described as log4j for D). We are happier now with a lot less functionality, but on the other hand with the simplest API that works.

In your last post you said that you wrote it on a weekend, which is it?

That api may work for your requirements, but this should go into phobos and allow anybody to get satisfied.

Reply via email to