YULTek/Otarcik_CAN/Sources/GeneralMessagesLogDispatcher.cpp

164 lines
4.7 KiB
C++

/*******************************************************************************
* *
* 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 <QDateTime>
#include <SysLogger.h>
//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;
}