diff --git a/message_handler.cpp b/message_handler.cpp index 8b655bd..3af5ff1 100755 --- a/message_handler.cpp +++ b/message_handler.cpp @@ -2,6 +2,9 @@ #include #include +#include +#include +#include #define OUTPUT_LEN (512) @@ -42,51 +45,43 @@ QtMessageHandler atbInstallMessageHandler(QtMessageHandler handler) { /// #if (QT_VERSION > QT_VERSION_CHECK(5, 0, 0) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) void atbDebugOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { - static constexpr const char *format = "hh:mm:ss"; // static constexpr const char *format = "dd.MM.yyyy hh:mm:ss"; QByteArray localMsg = msg.toLocal8Bit(); - const char *file = context.file ? context.file : ""; - const char *function = context.function ? context.function : ""; - const char *p = std::strstr(function, "::"); - if (p) { - function = p + 2; - } - char const* output = std::strrchr(file, '/'); - if (output) { - file = output + 1; - } - qint64 const currentMSecsSinceEpoch = QDateTime::currentMSecsSinceEpoch(); - int const fractional_part = currentMSecsSinceEpoch % 1000; + QString fileName(context.file ? context.file : "N/A"); + QString function(context.function ? context.function : "N/A"); char buf[OUTPUT_LEN]{}; memset(buf, 0x00, sizeof(buf)); - QDateTime const datetime = QDateTime::fromMSecsSinceEpoch(currentMSecsSinceEpoch); + QString const datetime = QDateTime::currentDateTime().toString(Qt::ISODateWithMs); switch (type) { case QtDebugMsg: { if (debugLevel == QtDebugMsg) { - snprintf(buf, sizeof(buf)-1, "%30.30s (%20.20s:%04u) %s.%03d DEBG %s", - function, file, context.line, - datetime.time().toString(format).toStdString().c_str(), - fractional_part, + snprintf(buf, sizeof(buf)-1, "%s DEBG [%s:%s:%04u] %s", + datetime.toStdString().c_str(), + function.toStdString().c_str(), + fileName.toStdString().c_str(), + context.line, localMsg.constData()); fprintf(stderr, "%s\n", buf); } } break; case QtInfoMsg: { if (debugLevel == QtInfoMsg || debugLevel == QtDebugMsg) { - snprintf(buf, sizeof(buf)-1, "%30.30s (%20.20s:%04u) %s.%03d INFO %s", - function, file, context.line, - datetime.time().toString(format).toStdString().c_str(), - fractional_part, + snprintf(buf, sizeof(buf)-1, "%s DEBG [%s:%s:%04u] %s", + datetime.toStdString().c_str(), + function.toStdString().c_str(), + fileName.toStdString().c_str(), + context.line, localMsg.constData()); fprintf(stderr, "%s\n", buf); } } break; case QtWarningMsg: { if (debugLevel == QtInfoMsg || debugLevel == QtDebugMsg || debugLevel == QtWarningMsg) { - snprintf(buf, sizeof(buf)-1, "%30.30s (%20.20s:%04u) %s.%03d WARN %s", - function, file, context.line, - datetime.time().toString(format).toStdString().c_str(), - fractional_part, + snprintf(buf, sizeof(buf)-1, "%s DEBG [%s:%s:%04u] %s", + datetime.toStdString().c_str(), + function.toStdString().c_str(), + fileName.toStdString().c_str(), + context.line, localMsg.constData()); fprintf(stderr, "%s\n", buf); } @@ -94,10 +89,11 @@ void atbDebugOutput(QtMsgType type, const QMessageLogContext &context, const QSt case QtCriticalMsg: { if (debugLevel == QtInfoMsg || debugLevel == QtDebugMsg || debugLevel == QtWarningMsg || debugLevel == QtCriticalMsg) { - snprintf(buf, sizeof(buf)-1, "%30.30s (%20.20s:%04u) %s.%03d CRIT %s", - function, file, context.line, - datetime.time().toString(format).toStdString().c_str(), - fractional_part, + snprintf(buf, sizeof(buf)-1, "%s DEBG [%s:%s:%04u] %s", + datetime.toStdString().c_str(), + function.toStdString().c_str(), + fileName.toStdString().c_str(), + context.line, localMsg.constData()); fprintf(stderr, "%s\n", buf); } @@ -106,18 +102,18 @@ void atbDebugOutput(QtMsgType type, const QMessageLogContext &context, const QSt if (debugLevel == QtInfoMsg || debugLevel == QtDebugMsg || debugLevel == QtWarningMsg || debugLevel == QtCriticalMsg || debugLevel == QtFatalMsg) { - snprintf(buf, sizeof(buf)-1, "%30.30s (%20.20s:%04u) %s.%03d FATAL %s", - function, file, context.line, - datetime.time().toString(format).toStdString().c_str(), - fractional_part, + snprintf(buf, sizeof(buf)-1, "%s DEBG [%s:%s:%04u] %s", + datetime.toStdString().c_str(), + function.toStdString().c_str(), + fileName.toStdString().c_str(), + context.line, localMsg.constData()); fprintf(stderr, "%s\n", buf); } } break; default: { - fprintf(stderr, "%*.*s.%03d No ErrorLevel defined! %s\n", OUTPUT_LEN, OUTPUT_LEN, - datetime.time().toString(format).toStdString().c_str(), fractional_part, - msg.toStdString().c_str()); + fprintf(stderr, "%s No ErrorLevel defined! %s\n", + datetime.toStdString().c_str(), msg.toStdString().c_str()); } } }