YULTek/Otarcik_CAN/Sources/SysLogger.cpp

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;
}