17#ifdef USE_QAPPLICATION
19 #include <QJsonDocument>
20 #include <QJsonObject>
27 #define qDebug QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).debug
28 #define qInfo QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).info
29 #define qWarning QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).warning
30 #define qCritical QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).critical
33inline void qtMessageOutput(QtMsgType type,
const QMessageLogContext &context,
const QString &msg) {
34 QByteArray name(LogStream::sender(context.function).c_str());
35 QByteArray note((context.line) ? QByteArray(context.file) +
":" + QByteArray::number(context.line) :
"");
36 switch (
static_cast<int>(type)) {
37 case QtDebugMsg: LogStream::message({+LogStream::Debug | LogStream::DarkYellow, name.data(), (
"(Qt) " + msg.toUtf8()).data(), note.data()}, LOG_STREAM_CONSOLE_COLOR | LOG_STREAM_CONSOLE_EXTEND);
break;
38 case QtInfoMsg: LogStream::message({+LogStream::Info | LogStream::DarkGreen, name.data(), (
"(Qt) " + msg.toUtf8()).data(), note.data()}, LOG_STREAM_CONSOLE_COLOR | LOG_STREAM_CONSOLE_EXTEND);
break;
39 case QtWarningMsg: LogStream::message({+LogStream::Warning | LogStream::DarkBlue, name.data(), (
"(Qt) " + msg.toUtf8()).data(), note.data()}, LOG_STREAM_CONSOLE_COLOR | LOG_STREAM_CONSOLE_EXTEND);
break;
40 case QtCriticalMsg: LogStream::message({+LogStream::Error | LogStream::DarkRed, name.data(), (
"(Qt) " + msg.toUtf8()).data(), note.data()}, LOG_STREAM_CONSOLE_COLOR | LOG_STREAM_CONSOLE_EXTEND);
break;
42 fprintf(stderr,
"(Qt) Fatal error: %s\nprogramm exit\n", msg.toUtf8().data());
46 fprintf(stderr,
"(Qt) Warning: unknown log message type: %d\n",
static_cast<int>(type));
53 if (v.isEmpty()) log <<
"\"\"";
54 else { log << v.toStdString(); }
58 if (v.isEmpty()) log <<
"\"\"";
59 else { log << v.toStdString(); }
63 if (v.isEmpty()) log <<
"{}";
64 else { log << QJsonDocument(v).toJson().toStdString(); }
The LogStream class.
Definition LogStream.h:44