将错误文件发送到QT下的支持

将错误文件发送到QT下的支持,qt,Qt,我在QTCreater下创建了一个项目。我想将所有错误保存在日志文件中 并将其发送给程序支持以解决这些错误 我的意思是自动生成文件,并在出现错误时自动发送。我有20多个源文件,我不喜欢在每个方法中调用函数在文件中插入数据并保存它。我需要做的是在grails应用程序中充当过滤器 有办法吗 thx for you help通过正常的try/catch(我更喜欢if/else检查)捕获所有错误,并将消息发送到自行开发的日志类,该类将把该消息输出到文件 我使用此场景尝试它可能会帮助您: 1-创建一个具有

我在QTCreater下创建了一个项目。我想将所有错误保存在日志文件中 并将其发送给程序支持以解决这些错误

我的意思是自动生成文件,并在出现错误时自动发送。我有20多个源文件,我不喜欢在每个方法中调用函数在文件中插入数据并保存它。我需要做的是在grails应用程序中充当过滤器

有办法吗


thx for you help

通过正常的try/catch(我更喜欢if/else检查)捕获所有错误,并将消息发送到自行开发的日志类,该类将把该消息输出到文件


我使用此场景尝试它可能会帮助您:

1-创建一个具有两个按钮的窗体,一个用于开始录制,另一个用于停止。(记录表格)

2-在标头中声明一个record form类型的指针,并在构造函数中创建一个新实例

3-记录表中有2种方法和一个变量:

在标题中:

private
QString fileName;
在构造函数中:

conf = new conf(this);
connect(ui->btnStartRecording,SIGNAL(clicked()),this,SLOT(on_btnStartRecording_clicked()));
connect(ui->btnStopRecording,SIGNAL(clicked()),this,SLOT(on_btnStopRecording_clicked()));
第一种方法:

void record::on_btnStartRecording_clicked(){
        fileName = QFileDialog::getSaveFileName(this, tr("Save As"), ".log");
        if (!fileName.isEmpty()){
            if (!fileName.contains(".log")){
                fileName = fileName + ".log";
            }
                conf->open_close_file(fileName,true);
                QMessageBox::warning(this, "Start Recording", "Start Recording");
                ui->btnStartRecording->setDisabled(true);
                ui->btnStopRecording->setDisabled(false);
        }
   }
void conf::open_close_file(QString fileName, bool boolFlag){
if (boolFlag == true){
    file->setFileName(fileName);
    if(file->open(QFile::WriteOnly | QFile::Text)){
    }
}else{
    file->close();
    file->setFileName("");
}
}
第二种方法:

void record::on_btnStopRecording_clicked(){
        if (!fileName.isEmpty()){
                conf->open_close_file(fileName,false);
                QMessageBox::warning(this, "Stop Recording", "Stop Recording");
                ui->btnStartRecording->setDisabled(false);
                ui->btnStopRecording->setDisabled(true);
        }
 }
void conf::write_in_file(QString data){
if (flag == true){
   QDateTime time;
   QString dataEntry = ">>>  " + time.currentDateTime().toString("dd/MM/yyyy [hh:mm:ss.zzz]") + ": " + data;
   QByteArray byte;
   byte.append(dataEntry);
   QDataStream out(file);
   out<<byte<<"\n";
}
}
4-conf是一个包含另外2个方法和1个变量的类:

变量:

QFile *file;
第一种方法:

void record::on_btnStartRecording_clicked(){
        fileName = QFileDialog::getSaveFileName(this, tr("Save As"), ".log");
        if (!fileName.isEmpty()){
            if (!fileName.contains(".log")){
                fileName = fileName + ".log";
            }
                conf->open_close_file(fileName,true);
                QMessageBox::warning(this, "Start Recording", "Start Recording");
                ui->btnStartRecording->setDisabled(true);
                ui->btnStopRecording->setDisabled(false);
        }
   }
void conf::open_close_file(QString fileName, bool boolFlag){
if (boolFlag == true){
    file->setFileName(fileName);
    if(file->open(QFile::WriteOnly | QFile::Text)){
    }
}else{
    file->close();
    file->setFileName("");
}
}
第二种方法:

void record::on_btnStopRecording_clicked(){
        if (!fileName.isEmpty()){
                conf->open_close_file(fileName,false);
                QMessageBox::warning(this, "Stop Recording", "Stop Recording");
                ui->btnStartRecording->setDisabled(false);
                ui->btnStopRecording->setDisabled(true);
        }
 }
void conf::write_in_file(QString data){
if (flag == true){
   QDateTime time;
   QString dataEntry = ">>>  " + time.currentDateTime().toString("dd/MM/yyyy [hh:mm:ss.zzz]") + ": " + data;
   QByteArray byte;
   byte.append(dataEntry);
   QDataStream out(file);
   out<<byte<<"\n";
}
}
void conf::在文件中写入(QString数据){
如果(标志==真){
QDateTime时间;
QString dataEntry=“>>>”+time.currentDateTime().toString(“dd/MM/yyyy[hh:MM:ss.zzz]”+”:“+数据;
QByteArray字节;
追加(数据项);
QDataStream out(文件);

是否有一个通用类或方法可以使用它来避免在程序中的每个方法中使用try/catch?如果为了让应用程序继续运行而需要使用它,那么您应该捕获它。如果您将整个代码包装在一个try/catch中,并且抛出一个异常,则整个应用程序将停止。因此,最好尽可能在最接近的位置捕获它。th部分解释了如何创建一个文件,我可以通过我的电子邮件发送附加它,有没有其他方法自动发送此文件??!