1111
1212/* Log Action -- taken by user */
1313#define LOGA (...) \
14- OELogger::instance ().LOGFile(" [open-ephys][action] " , __VA_ARGS__);
14+ OELogger::GetInstance ().LOGFile(" [open-ephys][action] " , __VA_ARGS__);
1515
1616/* Log Buffer -- related logs i.e. inside process() method */
1717#define LOGB (...) \
18- OELogger::instance ().LOGFile(" [open-ephys][buffer] " , __VA_ARGS__);
18+ OELogger::GetInstance ().LOGFile(" [open-ephys][buffer] " , __VA_ARGS__);
1919
2020/* Log Console -- gets printed to the GUI Debug Console */
2121#define LOGC (...) \
22- OELogger::instance ().LOGConsole(" [open-ephys] " , __VA_ARGS__);
22+ OELogger::GetInstance ().LOGConsole(" [open-ephys] " , __VA_ARGS__);
2323
2424/* Log Debug -- gets printed to the console in debug mode, to file otherwise */
2525#ifdef DEBUG
2626
2727#define LOGD (...) \
28- OELogger::instance ().LOGConsole(" [open-ephys][debug] " , __VA_ARGS__);
28+ OELogger::GetInstance ().LOGConsole(" [open-ephys][debug] " , __VA_ARGS__);
2929#else
3030/* Log Debug -- gets printed to the log file */
3131#define LOGD (...) \
32- OELogger::instance ().LOGFile(" [open-ephys][debug] " , __VA_ARGS__);
32+ OELogger::GetInstance ().LOGFile(" [open-ephys][debug] " , __VA_ARGS__);
3333#endif
3434
3535/* Log Deep Debug -- gets printed to log file (e.g. enable after a crash to get more details) */
3636#define LOGDD (...) \
37- OELogger::instance ().LOGFile(" [open-ephys][ddebug] " , __VA_ARGS__);
37+ OELogger::GetInstance ().LOGFile(" [open-ephys][ddebug] " , __VA_ARGS__);
3838
3939/* Log Error -- gets printed to console with flare */
4040#define LOGE (...) \
41- OELogger::instance ().LOGError(" [open-ephys] ***ERROR*** " , __VA_ARGS__);
41+ OELogger::GetInstance ().LOGError(" [open-ephys] ***ERROR*** " , __VA_ARGS__);
4242
4343/* Log File -- gets printed directly to main output file */
4444#define LOGF (...) LOGD(...)
4545
4646/* Log Graph -- gets logs related to processor graph generation/modification events */
4747#define LOGG (...) \
48- OELogger::instance ().LOGFile(" [open-ephys][graph] " , __VA_ARGS__);
48+ OELogger::GetInstance ().LOGFile(" [open-ephys][graph] " , __VA_ARGS__);
4949
5050/* Thread-safe logger */
5151class OELogger
@@ -57,10 +57,10 @@ std::ofstream logFile;
5757
5858 OELogger () { }
5959public:
60- static OELogger& instance ( )
60+ static OELogger& GetInstance ( const std::string& log_file = " activity.log " )
6161 {
62- static OELogger lg ;
63- return lg ;
62+ static OELogger instance (log_file) ;
63+ return instance ;
6464 }
6565
6666 OELogger (OELogger const &) = delete ;
@@ -100,12 +100,18 @@ std::ofstream logFile;
100100 // Each time the GUI is launched, a new error log is generated.
101101 // In case of a crash, the most recent file is appended with a datestring
102102 logFile.open (filePath, std::ios::out | std::ios::app);
103- time_t now = time (0 );
104- logFile << " [open-ephys] Session start time: " << ctime (&now);
105103 }
106104
107105private:
106+ OELogger (const std::string& log_file) : log_file(log_file)
107+ {
108+ if (!logFileExists)
109+ createLogFile (log_file);
110+ logFileExists = true ;
111+ }
108112 std::mutex mt;
113+ std::string log_file;
114+ bool logFileExists = false ;
109115};
110116
111117
0 commit comments