如何在 Android 上自定义 Qt 消息处理程序
How to customize Qt Message Handler on Android
我正在使用 qSetMessagePattern()
自定义 Qt 应用程序的日志格式。在 Windows 上,qDebug()
输出的正是我所期望的,但在 Android 上,它在之前添加了一些信息。
例如
qSetMessagePattern("[D] %{message}");
qDebug("Debug test");
Windows 输出:
[D] Debug test
Android 输出:
D/Qt (30070): ..\project\filename.cpp:521 (void Class::method()): [D] Debug test
我尝试制作自定义处理程序(并使用 qInstallMessageHandler()
安装它),但我不知道消息处理程序应如何在 Android
上输出调试信息
问题:如何使 Android 消息处理程序停止在该信息之前添加信息,或者如何为 Android 编写自定义消息处理程序。
找到了android默认消息处理程序的代码,格式是硬编码的,所以我写了一个类似的版本:
#include <android/log.h>
static void android_message_handler(QtMsgType type,
const QMessageLogContext &context,
const QString &message)
{
android_LogPriority priority = ANDROID_LOG_DEBUG;
switch (type) {
case QtDebugMsg: priority = ANDROID_LOG_DEBUG; break;
case QtWarningMsg: priority = ANDROID_LOG_WARN; break;
case QtCriticalMsg: priority = ANDROID_LOG_ERROR; break;
case QtFatalMsg: priority = ANDROID_LOG_FATAL; break;
};
__android_log_print(priority, "Qt", "%s", qPrintable(message));
}
并安装:
qInstallMessageHandler(android_message_handler);
我正在使用 qSetMessagePattern()
自定义 Qt 应用程序的日志格式。在 Windows 上,qDebug()
输出的正是我所期望的,但在 Android 上,它在之前添加了一些信息。
例如
qSetMessagePattern("[D] %{message}");
qDebug("Debug test");
Windows 输出:
[D] Debug test
Android 输出:
D/Qt (30070): ..\project\filename.cpp:521 (void Class::method()): [D] Debug test
我尝试制作自定义处理程序(并使用 qInstallMessageHandler()
安装它),但我不知道消息处理程序应如何在 Android
问题:如何使 Android 消息处理程序停止在该信息之前添加信息,或者如何为 Android 编写自定义消息处理程序。
找到了android默认消息处理程序的代码,格式是硬编码的,所以我写了一个类似的版本:
#include <android/log.h>
static void android_message_handler(QtMsgType type,
const QMessageLogContext &context,
const QString &message)
{
android_LogPriority priority = ANDROID_LOG_DEBUG;
switch (type) {
case QtDebugMsg: priority = ANDROID_LOG_DEBUG; break;
case QtWarningMsg: priority = ANDROID_LOG_WARN; break;
case QtCriticalMsg: priority = ANDROID_LOG_ERROR; break;
case QtFatalMsg: priority = ANDROID_LOG_FATAL; break;
};
__android_log_print(priority, "Qt", "%s", qPrintable(message));
}
并安装:
qInstallMessageHandler(android_message_handler);