我在QTCreater下创建了一个项目。我想将所有错误保存在日志文件中 并将其发送给程序支持以解决这些错误。
我的意思是自动生成文件并在出现错误时自动发送。我有20多个源文件,我不喜欢在每个方法中调用函数在文件中插入数据并保存。我需要的是在grails应用程序中做过滤器
有办法吗?
thx for you help
答案 0 :(得分:0)
通过正常的try / catch捕获所有错误(我更喜欢if / else检查)并将消息发送到自行开发的Logging类,它将把它输出到文件中?
答案 1 :(得分:0)
我使用这个场景尝试它可以帮助你:
1-创建一个表单,其中包含2个按钮,一个用于开始录制,另一个用于停止。 (记录表格)
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 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);
}
}
4- conf是一个具有另外2个方法和1个变量的类:
变量:
QFile *file;
第一种方法:
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 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";
}
}
5-要在每个方法中调用write_in_file方法,以保存其中发生的任何错误。
6-最后点击停止记录并打开文件以查看结果
注意:
a-boolflag用于区分打开或关闭文件的方法调用。
b-您可以在单击开始按钮后关闭记录表单,然后处理程序出现错误,然后再打开它并单击停止(必须使用this.accept和this.reject)
希望这可以帮到你