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