/******************************************************************************* * * * Gros Gin électronique * * 2023 * * * * Project: Otarcik CAN * * * * * * * *******************************************************************************/ /* Description: This class allows to save system logs to a file and optionnaly to the GUI logs window */ #include "GeneralMessagesLogDispatcher.h" #include #include //singleton instantiation CGeneralMessagesLogDispatcher CGeneralMessagesLogDispatcher::mSingleton; CGeneralMessagesLogDispatcher::CGeneralMessagesLogDispatcher() { mGeneralStatusPageHandle = 0; mSystemLogFile = 0; } CGeneralMessagesLogDispatcher::~CGeneralMessagesLogDispatcher() { if(mSystemLogFile != 0) { mSystemLogFile->close(); delete mSystemLogFile; } } int CGeneralMessagesLogDispatcher::Init(CSysLogger *SysLoggerPtr) { mSysLoggerHandle = SysLoggerPtr; QString FileName; FileName = "./Logs/SystemLog.txt"; mSystemLogFile = new QFile(FileName); if(mSystemLogFile) { mSystemLogFile->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text | QIODevice::Unbuffered); QString temp; mSystemLogFile->write("\n\n"); mSystemLogFile->write(QString("********************************************************************\n").toUtf8()); mSystemLogFile->write(QString("Démarrage du logiciel Otarcik CAN version %3 le %1 à %2\n").arg(QDateTime::currentDateTime().date().toString("yyyy-MM-dd")).arg(QDateTime::currentDateTime().time().toString("hh:mm:ss")).arg(SOFTWARE_VERSION).toUtf8()); mSystemLogFile->write(QString("********************************************************************\n").toUtf8()); } mLogFileVerbosity = 3; mGuiLogVerbosity = 3; mSysLoggerHandle->SysLog("Dispatcher de message démarré","CGeneralMessageLogDispatcher"); return RET_OK; } int CGeneralMessagesLogDispatcher::AddLogMessage(QString LogLine, QString Module, bool AddToGUILogPanel, int MsgVerbosity, eGenMsgTextErrorStatus TxtErrStatus) { //TODO: Add text to log file... mSysLoggerHandle->SysLog(LogLine,Module); LogLine.remove('\n'); LogLine.remove('\r'); LogLine.append('\n'); LogLine.prepend(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")); if(mSystemLogFile == NULL) { qDebug("GeneralMessagesLogDispatcher : Trying to add log to invalid system log file pointer "); return RET_GENERAL_ERROR; } if(mSystemLogFile->isOpen() == false) { qDebug("GeneralMessagesLogDispatcher : Trying to add log to unopened system log file"); return RET_GENERAL_ERROR; } #ifdef GENERAL_MESSAGES_SEND_TO_STDOUT qDebug("%s",qPrintable(LogLine)); #endif if(MsgVerbosity <= mLogFileVerbosity) { mSystemLogFile->write(LogLine.toUtf8()); } if(MsgVerbosity <= mGuiLogVerbosity) { if(AddToGUILogPanel == true) { if(TxtErrStatus == GEN_MSG_TXT_ERROR_STATUS) { LogLine.prepend("%E"); } else if(TxtErrStatus == GEN_MSG_TXT_WARNING_STATUS) { LogLine.prepend("%W"); } else if(TxtErrStatus == GEN_MSG_TXT_SUCCESS_STATUS) { LogLine.prepend("%S"); } if(mGeneralStatusPageHandle != 0) { mGeneralStatusPageHandle->AddGeneralMsgBoxLineEntry(LogLine); } else { qDebug("Someone forgot to assing their pointers in CGeneralMessagesLogDispatch::AddLogMessage!! This needs to be fixed"); return RET_GENERAL_ERROR; } } } return RET_OK; } int CGeneralMessagesLogDispatcher::BindGuiPageHandle(CGeneralStatusPage *Handle) { if(Handle == 0) { return RET_GENERAL_ERROR; } else { mGeneralStatusPageHandle = Handle; } return RET_OK; } int CGeneralMessagesLogDispatcher::SetLogVerbosities(int LogFileVerbosity, int GuiLogVerbosity) { mGuiLogVerbosity = GuiLogVerbosity; mLogFileVerbosity = LogFileVerbosity; return RET_OK; }