On Sunday, 29 March 2015 at 01:36:24 UTC, lobo wrote:
Hi,

I'm trying to use std.experimental.logger and I'd like the logf(), tracef() style functions to log to a file and stdout. (note: I can use sharedLog.logf(), sharedLog.tracef(), but I prefer just logf())


So I did this:

shared static this() {
    auto ml = new MultiLogger();
    ml.insertLogger("stdout", new FileLogger(std.stdio.stdout));
    ml.insertLogger("applog", new FileLogger("applog.txt"));
    sharedLog = ml;
    logf("This is a test"); // Doesn't work
}


Which doesn't work, so I'm wondering if it's possible to do what I want.


thanks,
lobo

Hmm, I should read code before posting. logf() etc. are using stdThreadLocalLog so this does what I want:

shared static this() {
 auto ml = new MultiLogger();
 ml.insertLogger("stdout", new FileLogger(std.stdio.stdout));
 ml.insertLogger("applog", new FileLogger("applog.txt"));
 stdThreadLocalLog = ml;
 logf("This is a test"); // works :)
}


Minor nitpick: This isn't clear in the docs of std.logger. Throughout sharedLog is referred to as the "default" logger, not stdThreadLocalLog.

Other than that I'm finding std.logger is really easy to use, nice work Phobosians!

bye,
lobo



Reply via email to