|
|
@ -35,7 +35,7 @@
|
|
|
|
using namespace tschweitzer;
|
|
|
|
using namespace tschweitzer;
|
|
|
|
using namespace tschweitzer::debugging;
|
|
|
|
using namespace tschweitzer::debugging;
|
|
|
|
|
|
|
|
|
|
|
|
TSLogger*TSLogger::_instance = NULL;
|
|
|
|
TSLogger*TSLogger::m_instance = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
/*!
|
|
|
|
\class TSLogger
|
|
|
|
\class TSLogger
|
|
|
@ -54,12 +54,12 @@ TSLogger*TSLogger::_instance = NULL;
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
TSLogger* TSLogger::getInstance(int verboseLevel)
|
|
|
|
TSLogger* TSLogger::getInstance(int verboseLevel)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (_instance == NULL)
|
|
|
|
if (m_instance == NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_instance = new TSLogger(verboseLevel);
|
|
|
|
m_instance = new TSLogger(verboseLevel);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return _instance;
|
|
|
|
return m_instance;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
/*!
|
|
|
@ -81,17 +81,17 @@ TSLogger* TSLogger::getInstance()
|
|
|
|
TSLogger::TSLogger(int verboseLevel) :
|
|
|
|
TSLogger::TSLogger(int verboseLevel) :
|
|
|
|
TQDialog()
|
|
|
|
TQDialog()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_TSLoggerDialogForm = new Ui::TSLoggerDialog();
|
|
|
|
m_TSLoggerDialogForm = new Ui::TSLoggerDialog();
|
|
|
|
_TSLoggerDialogForm->setupUi(this);
|
|
|
|
m_TSLoggerDialogForm->setupUi(this);
|
|
|
|
#ifdef _DEBUG
|
|
|
|
#ifdef _DEBUG
|
|
|
|
_verboseLevel = TQtDebugMsg;
|
|
|
|
m_verboseLevel = TQtDebugMsg;
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
_verboseLevel = TQtMsgType(verboseLevel);
|
|
|
|
m_verboseLevel = TQtMsgType(verboseLevel);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
_logFileInitState = NOTINITIALZED;
|
|
|
|
m_logFileInitState = NOTINITIALZED;
|
|
|
|
|
|
|
|
|
|
|
|
connect(_TSLoggerDialogForm->openLogFileFolderToolButton, SIGNAL(clicked()), this,
|
|
|
|
connect(m_TSLoggerDialogForm->openLogFileFolderToolButton, SIGNAL(clicked()), this,
|
|
|
|
SLOT(openLogFileFolder()));
|
|
|
|
SLOT(openLogFileFolder()));
|
|
|
|
|
|
|
|
|
|
|
|
// Make the main application not to wait for the logging window to close.
|
|
|
|
// Make the main application not to wait for the logging window to close.
|
|
|
@ -105,9 +105,9 @@ TSLogger::TSLogger(int verboseLevel) :
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void TSLogger::messageHandler(TQtMsgType type, const char *msg)
|
|
|
|
void TSLogger::messageHandler(TQtMsgType type, const char *msg)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (_instance == NULL)
|
|
|
|
if (m_instance == NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_instance = TSLogger::getInstance();
|
|
|
|
m_instance = TSLogger::getInstance();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
@ -119,7 +119,7 @@ void TSLogger::messageHandler(TQtMsgType type, const char *msg)
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
// Only log messages that have a higher or equal priority than set with the verbose level.
|
|
|
|
// Only log messages that have a higher or equal priority than set with the verbose level.
|
|
|
|
if (type < _instance->_verboseLevel)
|
|
|
|
if (type < m_instance->m_verboseLevel)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -166,10 +166,10 @@ void TSLogger::messageHandler(TQtMsgType type, const char *msg)
|
|
|
|
message += TQString::fromUtf8(msg) + "<br/>\n";
|
|
|
|
message += TQString::fromUtf8(msg) + "<br/>\n";
|
|
|
|
|
|
|
|
|
|
|
|
// Write the message to the log windows text edit.
|
|
|
|
// Write the message to the log windows text edit.
|
|
|
|
_instance->_TSLoggerDialogForm->logTextEdit->append(message);
|
|
|
|
m_instance->m_TSLoggerDialogForm->logTextEdit->append(message);
|
|
|
|
|
|
|
|
|
|
|
|
// Write/append the log message to the log file.
|
|
|
|
// Write/append the log message to the log file.
|
|
|
|
_instance->writeToLogFile(message);
|
|
|
|
m_instance->writeToLogFile(message);
|
|
|
|
|
|
|
|
|
|
|
|
// In case of a fatal error abort the application.
|
|
|
|
// In case of a fatal error abort the application.
|
|
|
|
if (type == TQtFatalMsg)
|
|
|
|
if (type == TQtFatalMsg)
|
|
|
@ -186,27 +186,27 @@ void TSLogger::setVerboseLevel(int level)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (level < 0)
|
|
|
|
if (level < 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_verboseLevel = TQtDebugMsg;
|
|
|
|
m_verboseLevel = TQtDebugMsg;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (level > 3)
|
|
|
|
if (level > 3)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_verboseLevel = TQtFatalMsg;
|
|
|
|
m_verboseLevel = TQtFatalMsg;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_verboseLevel = TQtMsgType(level);
|
|
|
|
m_verboseLevel = TQtMsgType(level);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
/*!
|
|
|
|
\brief Deletes the existing _instance of TSLogger.
|
|
|
|
\brief Deletes the existing m_instance of TSLogger.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void TSLogger::deleteInstance()
|
|
|
|
void TSLogger::deleteInstance()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (_instance != NULL)
|
|
|
|
if (m_instance != NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
delete _instance;
|
|
|
|
delete m_instance;
|
|
|
|
_instance = NULL;
|
|
|
|
m_instance = NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -215,7 +215,7 @@ void TSLogger::deleteInstance()
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void TSLogger::openLogFileFolder()
|
|
|
|
void TSLogger::openLogFileFolder()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
TQDesktopServices::openUrl(TQFileInfo(_logFile).absolutePath());
|
|
|
|
TQDesktopServices::openUrl(TQFileInfo(m_logFile).absolutePath());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
/*!
|
|
|
@ -224,9 +224,9 @@ void TSLogger::openLogFileFolder()
|
|
|
|
void TSLogger::writeToLogFile(const TQString &message)
|
|
|
|
void TSLogger::writeToLogFile(const TQString &message)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// If the file where all logging messages should go to isn't initilized yet, do that now.
|
|
|
|
// If the file where all logging messages should go to isn't initilized yet, do that now.
|
|
|
|
if (_logFileInitState == NOTINITIALZED)
|
|
|
|
if (m_logFileInitState == NOTINITIALZED)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_logFileInitState = INITIALIZING;
|
|
|
|
m_logFileInitState = INITIALIZING;
|
|
|
|
|
|
|
|
|
|
|
|
// On different systems it may be that "TQDir::tempPath()" ends with a "/" or not. So check
|
|
|
|
// On different systems it may be that "TQDir::tempPath()" ends with a "/" or not. So check
|
|
|
|
// this.
|
|
|
|
// this.
|
|
|
@ -269,33 +269,33 @@ void TSLogger::writeToLogFile(const TQString &message)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
logFileName += "_" + TQString(randomChar) + ".html";
|
|
|
|
logFileName += "_" + TQString(randomChar) + ".html";
|
|
|
|
|
|
|
|
|
|
|
|
_logFile.setFileName(tempPath + "/" + logFileName);
|
|
|
|
m_logFile.setFileName(tempPath + "/" + logFileName);
|
|
|
|
|
|
|
|
|
|
|
|
// Set the tooltip of the open log file folder button to show the unique name of the log file.
|
|
|
|
// Set the tooltip of the open log file folder button to show the unique name of the log file.
|
|
|
|
_TSLoggerDialogForm->openLogFileFolderToolButton->setToolTip(
|
|
|
|
m_TSLoggerDialogForm->openLogFileFolderToolButton->setToolTip(
|
|
|
|
_TSLoggerDialogForm->openLogFileFolderToolButton->toolTip() + " (" + logFileName + ")");
|
|
|
|
m_TSLoggerDialogForm->openLogFileFolderToolButton->toolTip() + " (" + logFileName + ")");
|
|
|
|
|
|
|
|
|
|
|
|
_logFileInitState = INITIALZED;
|
|
|
|
m_logFileInitState = INITIALZED;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Add the message to the message queue.
|
|
|
|
// Add the message to the message queue.
|
|
|
|
_messageQueue << message;
|
|
|
|
m_messageQueue << message;
|
|
|
|
|
|
|
|
|
|
|
|
// If the logging file is initialzed, write all messages contained in the message queue into the
|
|
|
|
// If the logging file is initialzed, write all messages contained in the message queue into the
|
|
|
|
// file.
|
|
|
|
// file.
|
|
|
|
if (_logFileInitState == INITIALZED)
|
|
|
|
if (m_logFileInitState == INITIALZED)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Write/append the log message to the log file.
|
|
|
|
// Write/append the log message to the log file.
|
|
|
|
if (_logFile.open(TQIODevice::WriteOnly | TQIODevice::Text | TQIODevice::Append))
|
|
|
|
if (m_logFile.open(TQIODevice::WriteOnly | TQIODevice::Text | TQIODevice::Append))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
TQTextStream out(&_logFile);
|
|
|
|
TQTextStream out(&m_logFile);
|
|
|
|
|
|
|
|
|
|
|
|
while (!_messageQueue.isEmpty())
|
|
|
|
while (!m_messageQueue.isEmpty())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
out << _messageQueue.takeFirst() << "\n";
|
|
|
|
out << m_messageQueue.takeFirst() << "\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_logFile.close();
|
|
|
|
m_logFile.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|