The Logger class is initialized first and generally passed to System as an argument. It is important that it is declared under the name logger
because most Auryn classes expect it to exist globally under this name. A typical instantiation of Logger could look as follows
sprintf(strbuf, "%s/%s.%d.log", dir.c_str(), file_prefix.c_str(), world.rank()); string logfile = strbuf; logger = new Logger(logfile,world.rank());
where first the filename for the logfile is assembled using sprintf and then passed as logfile
argument to Logger. Note that Logger accepts to additional optional arguments which specify the level of detail that will be shown in the logs. This is the full constructor.
Logger(string filename, int rank, LogMessageType console = PROGRESS, LogMessageType file = NOTIFICATION );
Auryn will by default try to keep console output (first additional parameter) neat and go into a little more detail in the log file. If even further detail is needed there are more verbose LogMessageTypes such as
enum LogMessageType { EVERYTHING, VERBOSE, NOTIFICATION, SETTINGS, PROGRESS, WARNING, ERROR, NONE };
which will mostly be self-explanatory.