155 lines
4.3 KiB
C++
155 lines
4.3 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>
|
|
|
|
|
|
//singleton instantiation
|
|
CGeneralMessagesLogDispatcher CGeneralMessagesLogDispatcher::mSingleton;
|
|
|
|
|
|
CGeneralMessagesLogDispatcher::CGeneralMessagesLogDispatcher()
|
|
{
|
|
mGeneralStatusPageHandle = 0;
|
|
mSystemLogFile = 0;
|
|
|
|
|
|
}
|
|
|
|
CGeneralMessagesLogDispatcher::~CGeneralMessagesLogDispatcher()
|
|
{
|
|
if(mSystemLogFile != 0)
|
|
{
|
|
mSystemLogFile->close();
|
|
delete mSystemLogFile;
|
|
}
|
|
}
|
|
|
|
int CGeneralMessagesLogDispatcher::Init()
|
|
{
|
|
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 le %1 à %2\n").arg(QDateTime::currentDateTime().date().toString("yyyy-MM-dd")).arg(QDateTime::currentDateTime().time().toString("hh:mm:ss")).toUtf8());
|
|
mSystemLogFile->write(QString("********************************************************************\n").toUtf8());
|
|
}
|
|
|
|
mLogFileVerbosity = 3;
|
|
mGuiLogVerbosity = 3;
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int CGeneralMessagesLogDispatcher::AddLogMessage(QString LogLine, bool AddToGUILogPanel, int MsgVerbosity, eGenMsgTextErrorStatus TxtErrStatus)
|
|
{
|
|
//TODO: Add text to log file...
|
|
|
|
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;
|
|
}
|
|
|
|
|
|
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;
|
|
}
|