改进很多代码

This commit is contained in:
feiyangqingyun
2021-10-30 19:20:24 +08:00
parent cb138c2ec5
commit f027369f27
104 changed files with 842 additions and 348 deletions

View File

@@ -20,25 +20,107 @@ frmSaveLog::~frmSaveLog()
void frmSaveLog::initForm()
{
//启动定时器追加数据
count = 0;
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(append()));
timer->setInterval(1000);
timer->setInterval(100);
SaveLog::Instance()->setPath(qApp->applicationDirPath());
//添加消息类型
QStringList types, datas;
types << "Debug" << "Info" << "Warning" << "Critical" << "Fatal";
datas << "1" << "2" << "4" << "8" << "16";
ui->cboxType->addItems(types);
//添加消息类型到列表用于勾选设置哪些类型需要重定向
int count = types.count();
for (int i = 0; i < count; ++i) {
QListWidgetItem *item = new QListWidgetItem;
item->setText(types.at(i));
item->setData(Qt::UserRole, datas.at(i));
item->setCheckState(Qt::Checked);
ui->listType->addItem(item);
}
//添加日志文件大小下拉框
ui->cboxSize->addItem("不启用", 0);
ui->cboxSize->addItem("5kb", 5);
ui->cboxSize->addItem("10kb", 10);
ui->cboxSize->addItem("30kb", 30);
ui->cboxSize->addItem("1mb", 1024);
ui->cboxRow->addItem("不启用", 0);
ui->cboxRow->addItem("100条", 100);
ui->cboxRow->addItem("500条", 500);
ui->cboxRow->addItem("2000条", 2000);
ui->cboxRow->addItem("10000条", 10000);
//设置是否开启日志上下文打印比如行号、函数等
SaveLog::Instance()->setUseContext(false);
//设置文件存储目录
SaveLog::Instance()->setPath(qApp->applicationDirPath() + "/log");
}
void frmSaveLog::append()
void frmSaveLog::append(const QString &flag)
{
QString msg = QString("当前时间: %1 测试打印输出消息").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"));
if (count >= 100) {
count = 0;
ui->txtMain->clear();
}
QString str1;
int type = ui->cboxType->currentIndex();
if (!ui->ckSave->isChecked()) {
if (type == 0) {
str1 = "Debug ";
} else if (type == 1) {
str1 = "Infox ";
} else if (type == 2) {
str1 = "Warnx ";
} else if (type == 3) {
str1 = "Error ";
} else if (type == 4) {
str1 = "Fatal ";
}
}
QString str2 = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
QString str3 = flag.isEmpty() ? "自动插入消息" : flag;
QString msg = QString("%1当前时间: %2 %3").arg(str1).arg(str2).arg(str3);
//开启网络重定向换成英文方便接收解析不乱码
//对方接收解析的工具未必是utf8
if (ui->ckNet->isChecked()) {
msg = QString("%1time: %2 %3").arg(str1).arg(str2).arg("(QQ: 517216493 WX: feiyangqingyun)");
}
count++;
ui->txtMain->append(msg);
qDebug() << msg;
//根据不同的类型打印
//TMD转换要分两部走不然msvc的debug版本会乱码(英文也一样)
//char *data = msg.toUtf8().data();
QByteArray buffer = msg.toUtf8();
const char *data = buffer.constData();
if (type == 0) {
qDebug(data);
} else if (type == 1) {
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
qInfo(data);
#endif
} else if (type == 2) {
qWarning(data);
} else if (type == 3) {
qCritical(data);
} else if (type == 4) {
//调用下面这个打印完会直接退出程序
qFatal(data);
}
}
void frmSaveLog::on_btnDebug_clicked()
void frmSaveLog::on_btnLog_clicked()
{
QString msg = QString("当前时间: %1 手动插入消息").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"));
ui->txtMain->append(msg);
qDebug() << msg;
append("手动插入消息");
}
void frmSaveLog::on_ckTimer_stateChanged(int arg1)
@@ -47,12 +129,15 @@ void frmSaveLog::on_ckTimer_stateChanged(int arg1)
timer->stop();
} else {
timer->start();
on_btnLog_clicked();
}
}
void frmSaveLog::on_ckNet_stateChanged(int arg1)
{
SaveLog::Instance()->setToNet(arg1 != 0);
SaveLog::Instance()->setListenPort(ui->txtPort->text().toInt());
SaveLog::Instance()->setToNet(ui->ckNet->isChecked());
on_btnLog_clicked();
}
void frmSaveLog::on_ckSave_stateChanged(int arg1)
@@ -61,5 +146,42 @@ void frmSaveLog::on_ckSave_stateChanged(int arg1)
SaveLog::Instance()->stop();
} else {
SaveLog::Instance()->start();
on_btnLog_clicked();
}
}
void frmSaveLog::on_cboxSize_currentIndexChanged(int index)
{
int size = ui->cboxSize->itemData(index).toInt();
SaveLog::Instance()->setMaxSize(size);
on_btnLog_clicked();
}
void frmSaveLog::on_cboxRow_currentIndexChanged(int index)
{
int row = ui->cboxRow->itemData(index).toInt();
SaveLog::Instance()->setMaxRow(row);
on_btnLog_clicked();
}
void frmSaveLog::on_listType_itemPressed(QListWidgetItem *item)
{
if (item <= 0) {
return;
}
//切换选中行状态
item->setCheckState(item->checkState() == Qt::Checked ? Qt::Unchecked : Qt::Checked);
//找到所有勾选的类型进行设置
quint8 types = 0;
int count = ui->listType->count();
for (int i = 0; i < count; ++i) {
QListWidgetItem *item = ui->listType->item(i);
if (item->checkState() == Qt::Checked) {
types += item->data(Qt::UserRole).toInt();
}
}
SaveLog::Instance()->setMsgType((MsgType)types);
}