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.