So you want the iostream way, global logger objects, otherwise i don't see how this solves the problem you are suggesting.

No globals, of course, loggers are part of objects. In most cases, everyone who adds log entry creates its own logger and add it into a hierarchy.

class A {
        logger log;
}

class B {
        A a;
        logger log;
}

void some_function() {
auto log = new logger("where to? why would i care who call this? why do i need this line anyways? :)")
        log.error(...);
}

---

I think we are looking this from fairly different angles.
Most of the times all i want to do just :

module logger;

void note(uint level, A...)(A a);
void note_redirect(uint level, string);
void note_enable(uint level, bool on);
uint note_new(string);

// default levels
enum {
        warning = 0,
        error,
        fatal,
}

import logger;

void some_function() {
        ...
        note(...);
        ...
        note!error(...);
        ...
        note!fatal(...);
        ...
        note!my_level(...);
}

Reply via email to