85 lines
2.2 KiB
C++
85 lines
2.2 KiB
C++
#include "SysLogger.h"
|
|
#include "defines.h"
|
|
#include <QDateTime>
|
|
#include <QString>
|
|
CSysLogger::CSysLogger(QObject *parent) : QObject(parent)
|
|
{
|
|
connect(&mSyslogSocket,&QAbstractSocket::stateChanged,this,&CSysLogger::SocketStateChanged);
|
|
}
|
|
|
|
int CSysLogger::Start(QString SyslogServerAddress, int SyslogServerPort)
|
|
{
|
|
mSyslogServerAddress = SyslogServerAddress;
|
|
mSyslogServerPort = SyslogServerPort;
|
|
|
|
mSyslogSocket.connectToHost(SyslogServerAddress,SyslogServerPort);
|
|
return RET_OK;
|
|
}
|
|
|
|
void CSysLogger::SocketStateChanged(QAbstractSocket::SocketState socketState)
|
|
{
|
|
qDebug("Syslog socked state : %d",socketState);
|
|
switch (socketState)
|
|
{
|
|
case QAbstractSocket::ConnectedState:
|
|
{
|
|
qDebug("Syslogger connected...");
|
|
SysLog("Syslogger connected","CSysLogger");
|
|
|
|
break;
|
|
}
|
|
case QAbstractSocket::UnconnectedState:
|
|
{
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
qDebug("Syslogger Disconnected...");
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
bool CSysLogger::IsSyslogServerConnected()
|
|
{
|
|
int strate = mSyslogSocket.state();
|
|
if(mSyslogSocket.state() == QAbstractSocket::ConnectedState || mSyslogSocket.state() == QAbstractSocket::BoundState)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
int CSysLogger::SysLog(QString Message, QString Module)
|
|
{
|
|
if(IsSyslogServerConnected() == false)
|
|
return RET_GENERAL_ERROR;
|
|
|
|
|
|
/// timestamp hostname process [Module]:message ///
|
|
|
|
QString MsgString;
|
|
|
|
MsgString.clear();
|
|
|
|
//ISO date timestamp format
|
|
QDateTime datetime(QDateTime::currentDateTime());
|
|
datetime.setOffsetFromUtc(datetime.offsetFromUtc()); //this makes no sense but it's to circumvent a bug in QT
|
|
MsgString += datetime.toString(Qt::ISODate);
|
|
//MsgString += datetime.toString("yyyy-MM-dd_hh:mm:ss ");
|
|
|
|
|
|
///Add Hostname, PID, MSGID , STRUCTDATA (-)
|
|
MsgString.append(" Station_OT2301 OtarcikCAN ");
|
|
if(Module.isEmpty() == false)
|
|
{
|
|
MsgString.append(QString("[%1]").arg(Module));
|
|
}
|
|
MsgString.append(QString(":%1").arg(Message));
|
|
MsgString.append("\n\r");
|
|
|
|
mSyslogSocket.write(MsgString.toUtf8());
|
|
|
|
return RET_OK;
|
|
|
|
}
|