目录
qt4 log
log.h
#include <QtMsgHandler>
#include <QDateTime>
#include <QFile>
#include <QMutex>
void outputMessage(QtMsgType type, const char *msg)
{
static QMutex mutex;
mutex.lock();
QString txt;
QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
QString current_date = QString("(%1)").arg(current_date_time);
switch (type) {
case QtDebugMsg:
txt = QString("Debug: %1").arg(msg);
break;
case QtWarningMsg:
txt = QString("Info: %1").arg(msg);
break;
case QtCriticalMsg:
txt = QString("Critical: %1").arg(msg);
break;
case QtFatalMsg:
txt = QString("Fatal: %1").arg(msg);
abort();
}
QFile outFile(QCoreApplication::applicationDirPath() + LOG_FILENAME);
outFile.open(QIODevice::ReadWrite|QIODevice::Text|QIODevice::Append);
QTextStream ts(&outFile);
ts << txt << endl;
outFile.flush();
outFile.close();
mutex.unlock();
}
main函数
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString path = QCoreApplication::applicationDirPath();
if(QFile::exists(path + LOG_FILENAME))
{
QFile::remove(path + LOG_FILENAME);
}
qInstallMsgHandler(outputMessage);
MainWindow w;
w.show();
return a.exec();
}
qt5 log
log.h
void MessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
static QMutex mutex;
mutex.lock();
QByteArray localMsg = msg.toLocal8Bit();
QString strMsg("");
switch(type)
{
case QtDebugMsg:
strMsg = QString("Debug:");
break;
case QtWarningMsg:
strMsg = QString("Warning:");
break;
case QtCriticalMsg:
strMsg = QString("Critical:");
break;
case QtFatalMsg:
strMsg = QString("Fatal:");
break;
}
QString strDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
QString strMessage = QString("DateTime[%1] File[%2] Line[%3] Function:%4 Message:%5")
.arg(strDateTime)
.arg(context.file)
.arg(context.line)
.arg(context.function)
.arg(localMsg.constData());
QFile file(QCoreApplication::applicationDirPath() + "/" + LOG_FILENAME);
file.open(QIODevice::ReadWrite | QIODevice::Text| QIODevice::Append);
QTextStream stream(&file);
stream << strMessage << "\r\n";
file.flush();
file.close();
mutex.unlock();
}
main函数
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//1、创建Log
// //方法一:每次新建log
// QString path = QCoreApplication::applicationDirPath();
// if(QFile::exists(path + LOG_FILENAME))
// {
// QFile::remove(path + LOG_FILENAME);
// }
//方法二:文件大于4MB,清除
const int SIZE = 1024 * 1024 *4;
QString path = QCoreApplication::applicationDirPath();
if(QFile::exists(path + LOG_FILENAME) && (SIZE < QFile(path + LOG_FILENAME).size()))
{
QFile::remove(path + LOG_FILENAME);
}
qInstallMessageHandler(MessageOutput);
qDebug("debug message.");
qWarning("warning message.");
qCritical("critical message.");
qFatal("fatal message.");
MainWindow w;
w.show();
//2、创建窗口大小(当前桌面的一半)
QScreen *pScreen = nullptr;
if(nullptr != qApp)
{
pScreen = qApp->primaryScreen();
}
if(nullptr != pScreen)
{
int width = pScreen->size().width();
int height = pScreen->size().height();
w.setMinimumSize(width/2, height/2);
}
return a.exec();
}