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