Qt 学习 第2节 日志输出和保存
2017-10-21 15:52
260 查看
重载 outputMessage (注意Qt4和Qt5有点不同)
#ifndef Qt_5
//===Qt4
DebuggerPrinter printer;
void outputMessage(QtMsgType type,const QMessageLogContext &context, QString &msg)
{
static QMutex mutex;
mutex.lock();
printer.printDebug(type, QString(msg));
mutex.unlock();
}
#else
//Qt5
void outputMessage(QtMsgType type,
const QMessageLogContext &context,
const QString &msg)
{
static QMutex mutex;
mutex.lock();
printer.printDebug(type, msg);
mutex.unlock();
}
#endif
void MainWindow::printDebug(int type, QString text)
{
switch (type) {
case QtDebugMsg:
// this->ui->textBrowser->setTextColor(Qt::magenta);
this->ui->textBrowser->setTextColor(Qt::darkGreen);
break;
case QtWarningMsg:
this->ui->textBrowser->setTextColor(Qt::yellow);
break;
case QtCriticalMsg:
this->ui->textBrowser->setTextColor(Qt::red);
break;
case QtFatalMsg:
this->ui->textBrowser->setTextColor(Qt::darkRed);
break;
default:
break;
}
this->ui->textBrowser->append(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")
+ ":" +text);
}
void MainWindow::save_log()
{
QDir tmp;
if(!tmp.exists(QCoreApplication::applicationDirPath()+"/log"))
{
if(!tmp.mkdir(QCoreApplication::applicationDirPath()+"/log"))
{
QMessageBox::warning(this,tr("警告"),tr("创建目录log失败"),tr("确认"));
return;
}
}
QString file_path =QCoreApplication::applicationDirPath() + QString("/log/%1.txt").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh-mm-ss"));
// QString file_path = QString("log/log.txt");
QFile file(file_path);
if(!file.open(QIODevice::WriteOnly | QFile::Text))
{
qDebug()<<"open"<<file_path<<"失败";
return;
}else
{
QTextStream out(&file);
out<<this->ui->textBrowser->toPlainText()<<endl;
file.flush();
file.close();
this->ui->textBrowser->clear();
}
}
//===========大于一万行自动保存
void MainWindow::slot_auto_save_log()
{
if(this->ui->textBrowser->document()->blockCount() >= 10000)
{
save_log();
}
}
//===========退出自动保存
void MainWindow::on_action_clear_log_triggered()
{
save_log();
}
相关文章推荐
- 【Log】一个功能强大的Log封装库包括控制日志输出,保存Log到文件,过滤输出等级。。
- Qt学习笔记之如何保存软件关闭前的相关设置
- flume学习(一):log4j直接输出日志到flume
- iOS真机调试打印并保存控制台输出日志
- 将文件夹下所有文件输出到日志文件中 c#递归算法学习示例
- 实现Qt日志功能并输出到文件(qDebug\qWarning\ qCritical\qFatal)
- Tomcat学习笔记 - 错误日志 - Tomcat部署项目或修改xml配置出现无法保存的情况(拒绝访问)
- flume学习(一):log4j直接输出日志到flume
- Qt 日志输出 QMessageLogger QtMessageHandler qInstallMessageHandler()
- 自定义log日志输出到文件中保存
- QT-窗口打印debug信息,本地日志保存,以及执行shell脚本并且把信息打印在窗口
- Qt 调试信息,输出日志
- spring boot 学习之路4(日志输出)
- iOS 将Log日志输出到文件中保存
- ios 将Log日志重定向输出到文件中保存--共享文件
- JVM学习之Eclipse输出GC日志
- Qt学习日志-第四章
- Qt 日志输出文件
- 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去
- QT简单调试日志输出