On Thursday, 2 October 2014 at 20:15:32 UTC, Sönke Ludwig wrote:
I still think that there should be the two predefined log levels "debug" (for developer related diagnostics) and "diagnostic" (for end user related diagnostics) between "trace" and "info". This is important for interoperability of different libraries, so that they have predictable debug output.

But independent of that, there should really be a function for safely generating the user defined intermediate log levels, maybe like this:

    LogLevel raiseLevel(LogLevel base_level, ubyte increment)
    {
        assert(base_level is a valid base level);
assert(base_level + increment smaller than the next base level);
        return cast(LogLevel)(base_level + increment);
    }

    // ok
    enum notice = raiseLevel(LogLevel.info, 16);

    // error, overlaps with the next base level
    enum suspicious = raiseLevel(LogLevel.info, 32);

Casting to an enum type is a pretty blunt operation, so it should at least be made as safe as possible.

from log4d
/// Aliases for debugX and fineX functions
alias debug1  = defaultLogFunction!(Log4DLogger.LOG_LEVEL_DEBUG1);
alias debug2  = defaultLogFunction!(Log4DLogger.LOG_LEVEL_DEBUG2);
alias debug3  = defaultLogFunction!(Log4DLogger.LOG_LEVEL_DEBUG3);

but adding a raiseLevel function should be no problem

Reply via email to