www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 15517] New: std.experimental.logger: using 'sharedLog' to

https://issues.dlang.org/show_bug.cgi?id=15517

          Issue ID: 15517
           Summary: std.experimental.logger: using 'sharedLog' to change
                    to file logging for default logger does not work
           Product: D
           Version: D2
          Hardware: x86
                OS: Mac OS X
            Status: NEW
          Severity: minor
          Priority: P1
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: varaccts yahoo.com

import std.experimental.logger;

void
main(string[] args)
{
    sharedLog = new FileLogger("logfile.log");

    log("Test log 1");
    log("Test log 2");
    log("Test log 3");
}

$ ls -l logfile.log
-rw-r--r--  1 randomuser  staff  0 Jan  4 19:19 logfile.log

The above creates the 'logfile.log' file, but does not seem to redirect the
default logs to the file -- at program exit, the 'logfile.log' is empty. From
the documentation, this should've changed the default logger to logging to the
file from logging to stderr.


Referring to the 'sharedLog' works though -- it seems like this just creates a
new logger and doesn't affect the default logger property??

import std.experimental.logger;

void
main(string[] args)
{
    sharedLog = new FileLogger("logfile.log");

    sharedLog.log("Test log 1");
    sharedLog.log("Test log 2");
    sharedLog.log("Test log 3");
}

$ ls -l logfile.log
-rw-r--r--  1 randomuser  staff  142 Jan  4 19:34 logfile.log

As per the doc:

From the doc:
The default Logger will by default log to stderr and has a default LogLevel of LogLevel.all. The default Logger can be accessed by using the property called sharedLog. This property a reference to the current default Logger. This reference can be used to assign a new default Logger. sharedLog = new FileLogger("New_Default_Log_File.log"); --
Jan 04