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