qInstallMessageHandler(outputMessage);
重定向日志到 log4z 后无法查看打印的日志信息。
解决方法
改造 log4z
库,Android
环境下使用 qInfo
将日志输出到调试控制台。
void LogerManager::showColorText(const char *text, int level)
{
if(level <= LOG_LEVEL_DEBUG || level > LOG_LEVEL_FATAL)
{
printf("%s", text);
return;
}
#ifdef __ANDROID__
// Android 下 printf 无法输出到调试控制台,但是 Qt 的 qDebug() 可以
qInfo() << text;
#else
#ifndef WIN32
printf("%s%s\e[0m", LOG_COLOR[level], text);
#else
Log4zAutoLocker l(_scLock);
HANDLE hStd = ::GetStdHandle(STD_OUTPUT_HANDLE);
if(hStd == INVALID_HANDLE_VALUE)
{
return;
}
CONSOLE_SCREEN_BUFFER_INFO oldInfo;
if(!GetConsoleScreenBufferInfo(hStd, &oldInfo))
{
return;
}
else
{
SetConsoleTextAttribute(hStd, LOG_COLOR[level]);
printf("%s", text);
SetConsoleTextAttribute(hStd, oldInfo.wAttributes);
}
#endif
fflush(stdout);
return;
}