diff --git a/message_handler.cpp b/message_handler.cpp index 08e493a..5765c3c 100755 --- a/message_handler.cpp +++ b/message_handler.cpp @@ -3,8 +3,7 @@ #include #include -#define OUTPUT_LEN (20) - +#define OUTPUT_LEN (512) static bool installedMsgHandler = false; static QtMsgType debugLevel = QtInfoMsg; @@ -41,49 +40,10 @@ QtMessageHandler atbInstallMessageHandler(QtMessageHandler handler) { /// return app.exec(); /// } /// -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) -void atbDebugOutput(QtMsgType type, const char *msg) { - switch (type) { - case QtDebugMsg: { - if (debugLevel <= QtDebugMsg) { - fprintf(stderr, "%*.*s Debug: %s\n", OUTPUT_LEN, OUTPUT_LEN, - QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg); - } - } break; - case QtInfoMsg: { - if (debugLevel <= QtInfoMsg) { - fprintf(stderr, "%*.*s Info: %s\n", OUTPUT_LEN, OUTPUT_LEN, - QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg); - } - } break; - case QtWarningMsg: { - if (debugLevel <= QtWarningMsg) { - fprintf(stderr, "%*.*s Warning: %s\n", OUTPUT_LEN, OUTPUT_LEN, - QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg); - } - } break; - case QtCriticalMsg: { - if (debugLevel <= QtCriticalMsg) { - fprintf(stderr, "%*.*s Critical: %s\n", OUTPUT_LEN, OUTPUT_LEN, - QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg); - } - } break; - case QtFatalMsg: { - if (debugLevel <= QtFatalMsg) { - fprintf(stderr, "%*.*s Fatal: %s\n", OUTPUT_LEN, OUTPUT_LEN, - QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg); - } - // abort(); - } break; - default: { - fprintf(stderr, "%*.*s No ErrorLevel defined! %s\n", OUTPUT_LEN, OUTPUT_LEN, - QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg); - } - } -} -#elif QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +#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 = "dd.MM.yyyy hh:mm:ss"; + 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 : ""; @@ -97,54 +57,65 @@ void atbDebugOutput(QtMsgType type, const QMessageLogContext &context, const QSt } qint64 const currentMSecsSinceEpoch = QDateTime::currentMSecsSinceEpoch(); int const fractional_part = currentMSecsSinceEpoch % 1000; + char buf[OUTPUT_LEN]{}; + memset(buf, 0x00, sizeof(buf)); QDateTime const datetime = QDateTime::fromMSecsSinceEpoch(currentMSecsSinceEpoch); switch (type) { case QtDebugMsg: { - if (debugLevel <= QtDebugMsg) { - // fprintf(stderr, "%*.*s CTX %s (%s:%u) ->\n", OUTPUT_LEN, OUTPUT_LEN, - // "", function, file, context.line); - //fprintf(stderr, "%*.*s.%03d DEBG %s\n", OUTPUT_LEN, OUTPUT_LEN, - // datetime.toString(format).toStdString().c_str(), fractional_part, - // localMsg.constData()); - fprintf(stderr, "%*.*s.%03d DEBUG %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN, - datetime.toString(format).toStdString().c_str(), fractional_part, - localMsg.constData(), file, context.line); + if (debugLevel == QtDebugMsg) { + snprintf(buf, sizeof(buf)-1, "%30.30s (%20.20s:%04u) %s.%03d DEBG %s\n", + function, file, context.line, + datetime.time().toString(format).toStdString().c_str(), + fractional_part, + localMsg.constData()); } } break; case QtInfoMsg: { - if (debugLevel <= QtInfoMsg) { - fprintf(stderr, "%*.*s.%03d INFO %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN, - datetime.toString(format).toStdString().c_str(), fractional_part, - localMsg.constData(), file, context.line); + if (debugLevel == QtInfoMsg || debugLevel == QtDebugMsg) { + snprintf(buf, sizeof(buf)-1, "%30.30s (%20.20s:%04u) %s.%03d INFO %s\n", + function, file, context.line, + datetime.time().toString(format).toStdString().c_str(), + fractional_part, + localMsg.constData()); } } break; case QtWarningMsg: { - if (debugLevel <= QtWarningMsg) { - fprintf(stderr, "%*.*s.%03d WARN %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN, - datetime.toString(format).toStdString().c_str(), fractional_part, - localMsg.constData(), file, context.line); + if (debugLevel == QtInfoMsg || debugLevel == QtDebugMsg || debugLevel == QtWarningMsg) { + snprintf(buf, sizeof(buf)-1, "%30.30s (%20.20s:%04u) %s.%03d WARN %s\n", + function, file, context.line, + datetime.time().toString(format).toStdString().c_str(), + fractional_part, + localMsg.constData()); } } break; case QtCriticalMsg: { - if (debugLevel <= QtCriticalMsg) { - fprintf(stderr, "%*.*s.%03d CRIT %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN, - datetime.toString(format).toStdString().c_str(), fractional_part, - localMsg.constData(), file, context.line); + if (debugLevel == QtInfoMsg || debugLevel == QtDebugMsg + || debugLevel == QtWarningMsg || debugLevel == QtCriticalMsg) { + snprintf(buf, sizeof(buf)-1, "%30.30s (%20.20s:%04u) %s.%03d CRIT %s\n", + function, file, context.line, + datetime.time().toString(format).toStdString().c_str(), + fractional_part, + localMsg.constData()); } } break; case QtFatalMsg: { - if (debugLevel <= QtFatalMsg) { - fprintf(stderr, "%*.*s.%03d FATAL %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN, - datetime.toString(format).toStdString().c_str(), fractional_part, - localMsg.constData(), file, context.line); + 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\n", + function, file, context.line, + datetime.time().toString(format).toStdString().c_str(), + fractional_part, + localMsg.constData()); } } break; default: { fprintf(stderr, "%*.*s.%03d No ErrorLevel defined! %s\n", OUTPUT_LEN, OUTPUT_LEN, - datetime.toString(format).toStdString().c_str(), fractional_part, + datetime.time().toString(format).toStdString().c_str(), fractional_part, msg.toStdString().c_str()); } } + fprintf(stderr, "%s\n", buf); } #endif