添加debug重定向,添加命令行
This commit is contained in:
@@ -65,6 +65,14 @@ public:
|
||||
myarray mid(qsizetype index,qsizetype len=-1LL){
|
||||
return myarray(QByteArray::mid(index,len));
|
||||
}
|
||||
QList<myarray> split(char sep){
|
||||
QByteArrayList list=QByteArray::split(sep);
|
||||
QList<myarray> myarrlist;
|
||||
foreach (QByteArray qb, list) {
|
||||
myarrlist.append(myarray(qb));
|
||||
};
|
||||
return myarrlist;
|
||||
}
|
||||
};
|
||||
|
||||
class mystring : public QString
|
||||
|
@@ -4,7 +4,6 @@
|
||||
#include "QDir"
|
||||
|
||||
// 配置路径
|
||||
#define CFG_PATH mystring("/home/root/config/")
|
||||
#define CHECK_CFG_FILE_NAME cfg_->def_check_cfg
|
||||
|
||||
check_range my_json::json_to_range(QJsonValue v)
|
||||
@@ -55,12 +54,6 @@ check_cfg::check_cfg()
|
||||
this->cfg_ = syscfg();
|
||||
this->scheme_ = nullptr;
|
||||
|
||||
QDir path;
|
||||
if (!path.exists(CFG_PATH))
|
||||
{
|
||||
path.mkdir(CFG_PATH);
|
||||
}
|
||||
|
||||
reload();
|
||||
}
|
||||
|
||||
@@ -89,7 +82,7 @@ void check_cfg::scheme_json_to_struct()
|
||||
scheme_->task_num = get_check_task_num();
|
||||
scheme_->timeout_m = get_check_time_out();
|
||||
scheme_->marerr_num = errs.size();
|
||||
qDebug("scheme,id=%d,task_num=%d",scheme_->plan_id,scheme_->task_num);
|
||||
qDebug("scheme,id=%d,task_num=%d", scheme_->plan_id, scheme_->task_num);
|
||||
for (int i = 0; i < scheme_->task_num; i++)
|
||||
{
|
||||
scheme_task_def *st = &scheme_->task[i];
|
||||
@@ -102,10 +95,10 @@ void check_cfg::scheme_json_to_struct()
|
||||
QList<check_range> rangs = ct.get_ranges();
|
||||
int rangs_num = rangs.size();
|
||||
int err_num = ret_errs.size();
|
||||
qDebug("st,err,item_num=%d,taskid=%d,taskindex=%d",st->item_num,st->taskid,st->taskindex);
|
||||
qDebug("st,err,item_num=%d,taskid=%d,taskindex=%d", st->item_num, st->taskid, st->taskindex);
|
||||
for (int i = 0; i < st->item_num; i++)
|
||||
{
|
||||
qDebug("\ti=%d",i);
|
||||
qDebug("\ti=%d", i);
|
||||
if (rangs_num > i)
|
||||
{
|
||||
st->range[i].err = 0;
|
||||
@@ -162,7 +155,7 @@ bool check_cfg::updata(QString jstring)
|
||||
json_doc = QJsonDocument::fromJson(jstring.toUtf8(), &err);
|
||||
if (err.error != QJsonParseError::NoError)
|
||||
{
|
||||
qWarning("parse json failed:%s",err.errorString().toLocal8Bit().data());
|
||||
qWarning("parse json failed:%s", err.errorString().toLocal8Bit().data());
|
||||
qWarning() << jstring;
|
||||
return false;
|
||||
}
|
||||
@@ -495,7 +488,7 @@ QList<check_err> check_cfg::get_ch_merrcode()
|
||||
if (!ch_errcode.isEmpty())
|
||||
{
|
||||
// 有子错误没找到主错误
|
||||
qWarning()<<"many suberr left.%d"<<ch_errcode;
|
||||
qWarning() << "many suberr left.%d" << ch_errcode;
|
||||
}
|
||||
return l;
|
||||
}
|
||||
@@ -511,7 +504,7 @@ bool check_cfg::in_err_range(QList<check_err> &l, uint8_t code)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
qDebug("can not find mcode,subcode=%d",code);
|
||||
qDebug("can not find mcode,subcode=%d", code);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
114
base/debug.cpp
Normal file
114
base/debug.cpp
Normal file
@@ -0,0 +1,114 @@
|
||||
|
||||
#include <QFile>
|
||||
#include <QMessageLogger>
|
||||
#include <qlogging.h>
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
#include <QDateTime>
|
||||
#include <QString>
|
||||
#include "base/mycfg.h"
|
||||
#include <QUdpSocket>
|
||||
#include <QDir>
|
||||
#include "QApplication"
|
||||
#include "QMutex"
|
||||
|
||||
#define FILE_PATH "/home/root/log/"
|
||||
#define FILE_NAME "_log.txt"
|
||||
|
||||
char *msgHead[] =
|
||||
{
|
||||
(char *)"Debug ",
|
||||
(char *)"Warning ",
|
||||
(char *)"Critical",
|
||||
(char *)"Fatal ",
|
||||
(char *)"Info "};
|
||||
|
||||
struct mydebug
|
||||
{
|
||||
QFile *file;
|
||||
QUdpSocket *socket_;
|
||||
QByteArray send_data;
|
||||
QHostAddress host_addr;
|
||||
quint16 port;
|
||||
bool active;
|
||||
void (*send_data_fun)(QByteArray data);
|
||||
QMutex mutex;
|
||||
// QList<QString> type_filter;
|
||||
// QList<QString> file_filter;
|
||||
// QList<filter_line> line_filter;
|
||||
};
|
||||
|
||||
static mydebug g_debug;
|
||||
|
||||
|
||||
void print_to_console(QtMsgType type, const QMessageLogContext &context, const QString &msg);
|
||||
void print_to_file(QtMsgType type, const QMessageLogContext &context, const QString &msg);
|
||||
|
||||
|
||||
// 创建日志文件,名称用于创建日志文件
|
||||
void mydebug_init(QString name)
|
||||
{
|
||||
qSetMessagePattern("[%{type}] %{time yyyy-MM-dd hh:mm:ss.zzz} %{function}:%{line} %{message}");
|
||||
QDir tempDir;
|
||||
if (!tempDir.exists(FILE_PATH))
|
||||
{
|
||||
tempDir.mkpath(FILE_PATH);
|
||||
}
|
||||
if (g_debug.file != nullptr)
|
||||
{
|
||||
delete g_debug.file;
|
||||
}
|
||||
|
||||
g_debug.file = new QFile(FILE_PATH + name + FILE_NAME);
|
||||
qInfo() << "set log file as " << g_debug.file->fileName();
|
||||
if (g_debug.file->exists())
|
||||
{
|
||||
if (g_debug.file->remove() != true)
|
||||
qWarning() << "remove file " << g_debug.file->fileName() << "err";
|
||||
}
|
||||
|
||||
if (!g_debug.file->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
qInstallMessageHandler(print_to_file);
|
||||
}
|
||||
|
||||
void mydebug_init()
|
||||
{
|
||||
qSetMessagePattern("[%{type}] %{time yyyy-MM-dd hh:mm:ss.zzz} %{function}:%{line} %{message}");
|
||||
qInfo() << "set log as console.";
|
||||
qInstallMessageHandler(print_to_console);
|
||||
}
|
||||
|
||||
void print_to_console(QtMsgType type, const QMessageLogContext &context, const QString &msg)
|
||||
{
|
||||
g_debug.mutex.lock();
|
||||
QByteArray localMsg = msg.toLocal8Bit();
|
||||
QString current_date_time = QDateTime::currentDateTime().toString("hh:mm:ss.zzz");
|
||||
Q_UNUSED(current_date_time);
|
||||
if(context.file!=0){
|
||||
fprintf(stderr, "%s | %s | %s:%u | %s\n", msgHead[type], current_date_time.toLocal8Bit().constData(), &context.file[20], context.line, localMsg.constData());
|
||||
}else{
|
||||
fprintf(stderr,"%s | %s | %s:%u | %s\n", msgHead[type], current_date_time.toLocal8Bit().constData(), context.file, context.line, localMsg.constData());
|
||||
}
|
||||
g_debug.mutex.unlock();
|
||||
}
|
||||
|
||||
void print_to_file(QtMsgType type, const QMessageLogContext &context, const QString &msg)
|
||||
{
|
||||
g_debug.mutex.lock();
|
||||
QByteArray localMsg = msg.toLocal8Bit();
|
||||
QString current_date_time = QDateTime::currentDateTime().toString("hh:mm:ss.zzz");
|
||||
if (g_debug.file)
|
||||
{
|
||||
QTextStream tWrite(g_debug.file);
|
||||
if(context.file!=0){
|
||||
tWrite << QString::asprintf("%s | %s | %s:%u | %s\n", msgHead[type], current_date_time.toLocal8Bit().constData(), &context.file[20], context.line, localMsg.constData());
|
||||
}else{
|
||||
tWrite << QString::asprintf("%s | %s | %s:%u | %s\n", msgHead[type], current_date_time.toLocal8Bit().constData(), context.file, context.line, localMsg.constData());
|
||||
}
|
||||
}
|
||||
g_debug.mutex.unlock();
|
||||
}
|
18
base/debug.h
Normal file
18
base/debug.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef debug_h__
|
||||
#define debug_h__
|
||||
|
||||
|
||||
#include "QDebug"
|
||||
|
||||
|
||||
void mydebug_init(QString name);
|
||||
|
||||
void mydebug_init();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -168,13 +168,13 @@ void mycfg::to_class(mystring str)
|
||||
debug_port = j.value("debug_port").toInt(12345);
|
||||
cmd_port = j.value("cmd_port").toInt(7777);
|
||||
log_redirect = j.value("log_redirect").toString("console");
|
||||
def_check_cfg = j.value("def_check_cfg").toString("checker_ye_cfg.json");
|
||||
def_mcu_app = j.value("def_mcu_app").toString("slave_app.pkt");
|
||||
def_check_cfg = j.value("def_check_cfg").toString(CFG_PATH+"checker_ye_cfg.json");
|
||||
def_mcu_app = j.value("def_mcu_app").toString(CFG_PATH+"slave_app.pkt");
|
||||
use_lua_judge = j.value("use_lua_judge").toBool(false);
|
||||
device_type = j.value("device_type").toString("checker");
|
||||
moter_count = j.value("moter_count").toInt(20000);
|
||||
uart_bsp = j.value("uart_bsp").toInt(57600);
|
||||
def_lua_judge = j.value("lua_judge").toString("judge.lua");
|
||||
def_lua_judge = j.value("lua_judge").toString(CFG_PATH+"judge.lua");
|
||||
coder_return_mode = j.value("coder_return_mode").toInt(1);
|
||||
slave_addr_start = j.value("slave_addr_start").toInt(0);
|
||||
slave_scheme_ext = j.value("slave_scheme_ext").toInt(0);
|
||||
@@ -252,7 +252,7 @@ void mycfg::init_env()
|
||||
{
|
||||
if (!info.privates.contains(name))
|
||||
{
|
||||
qInfo() << "release file " << file.fileName() << endl;
|
||||
qInfo() << "release file " << file.fileName();
|
||||
file.open(QIODevice::ReadWrite);
|
||||
file.write(d);
|
||||
file.close();
|
||||
@@ -296,7 +296,7 @@ void mycfg::init_env()
|
||||
if (md5_1 != md5_2)
|
||||
{
|
||||
if (file_dst.remove() != true)
|
||||
qWarning() << "remove file " << file_dst.fileName() << "err" << endl;
|
||||
qWarning() << "remove file " << file_dst.fileName() << "err";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -304,7 +304,7 @@ void mycfg::init_env()
|
||||
{
|
||||
if (!QFile::copy(file_src.fileName(), file_dst.fileName()))
|
||||
{
|
||||
qWarning() << "copy app failed." << endl;
|
||||
qWarning() << "copy app failed.";
|
||||
}
|
||||
}
|
||||
if (file_dst.fileName() != file_src.fileName())
|
||||
@@ -349,7 +349,7 @@ void mycfg::save()
|
||||
if (file.exists())
|
||||
{
|
||||
if (file.remove() != true)
|
||||
qWarning() << "remove file " << file.fileName() << "err" << endl;
|
||||
qWarning() << "remove file " << file.fileName() << "err";
|
||||
}
|
||||
file.open(QIODevice::ReadWrite);
|
||||
QTextStream stream(&file);
|
||||
@@ -369,7 +369,7 @@ bool mycfg::save_file(mystring name, myarray data)
|
||||
{
|
||||
if (file.remove() != true)
|
||||
{
|
||||
qWarning() << "remove file " << file.fileName() << "err" << endl;
|
||||
qWarning() << "remove file " << file.fileName() << "err";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user