/* * logger.cpp * * Created on: Dec 10, 2010 * Author: Miha Vitorovic */ #include "logger.h" #include #include #include #include #include #include #include #include #include using namespace epics::pvData; using std::ofstream; using std::ios; using std::endl; namespace epics { namespace pvAccess { class FileLogger : public NoDefaultMethods { public: FileLogger(String name) { logFile.open(name.data(), ios::app); } ~FileLogger() { logFile.close(); } void logMessage(const char* message) { time_t rawtime; time(&rawtime); char* timeStr = ctime(&rawtime); timeStr[strlen(timeStr)-1]='\0'; // remove newline logFile<logMessage(message); } static void exitFileLoggerHandler(void* pPrivate) { errlogFlush(); delete fileLogger; } void createFileLogger(String fname) { static Mutex mutex; Lock xx(mutex); if(fileLogger==NULL) { fileLogger = new FileLogger(fname); errlogInit(2048); errlogAddListener(errLogFileListener, NULL); epicsAtExit(exitFileLoggerHandler, NULL); } } } }