And in case someone wants my ConsoleLogger... Here is the log function I changed:

    override void log(ref LogLine msg)
        @trusted // FILE isn't @safe (as of DMD 2.065)
    {
        string pref;
        string color;
        File file;
        string colorNormal = "\x1B[0m";
        string colorRed = "\x1B[31m";
        string colorGreen = "\x1B[32m";
        string colorYellow = "\x1B[33m";
        string colorBlue = "\x1B[34m";
        string colorMagenta = "\x1B[35m";
        string colorCyan = "\x1B[36m";
        string colorWhite = "\x1B[37m";
        string colorReset = "\033[0m";

        color = colorGreen;

        final switch (msg.level) {
            case LogLevel.trace: pref = "trc"; file = m_diagFile; break;
            case LogLevel.debugV: pref = "dbv"; file = m_diagFile; break;
            case LogLevel.debug_: pref = "dbg"; file = m_diagFile; break;
            case LogLevel.diagnostic: pref = "dia"; file = m_diagFile; break;
            case LogLevel.info: pref = "INFO"; file = m_infoFile; break;
            case LogLevel.warn: pref = "WARN"; file = m_diagFile; color = colorYellow; break;
            case LogLevel.error: pref = "ERROR"; file = m_diagFile; color = colorRed; break;
            case LogLevel.critical: pref = "CRITICAL"; file = m_diagFile; color = colorRed; break;
            case LogLevel.fatal: pref = "FATAL"; file = m_diagFile; color = colorRed; break;
            case LogLevel.none: assert(false);
        }

        auto fmt = (msg.textLine == 1) ? this.format : this.infoFormat;

        final switch (fmt) {
            case Format.plain: file.writeln(msg.text); break;
            case Format.thread: file.writefln("[%08X:%08X %s] %s", msg.threadID, msg.fiberID, pref, msg.text); break;
            case Format.threadTime:
                auto tm = msg.time;
                file.writefln("[%08X:%08X %d.%02d.%02d %02d:%02d:%02d.%03d %s] %s",
                    msg.threadID, msg.fiberID,
                    tm.year, tm.month, tm.day, tm.hour, tm.minute, tm.second, tm.fracSec.msecs,
                    pref, msg.text);
                break;
            case Format.timeColor:
                auto tm = msg.time;
                file.writefln("[%d-%02d-%02d %02d:%02d:%02d.%03d %s%s%s] %s%s%s",
                    tm.year, tm.month, tm.day, tm.hour, tm.minute, tm.second, tm.fracSec.msecs,
                    color, pref, colorReset, color, msg.text, colorReset);
                break;
        }
        file.flush();
    }

I'm sure someone else would do better... But I'm just doing this for fun....