std.logger sharedLog usage
lobo via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Mar 28 18:42:55 PDT 2015
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
More information about the Digitalmars-d-learn
mailing list