C++ 如何将调试信息保存到qt中的特定文件中?

C++ 如何将调试信息保存到qt中的特定文件中?,c++,qt,C++,Qt,我想知道如何将调试信息保存到名为“LogFile yyymmddhhmmss”的文件中。我使用这样的公式: QString dt = QDateTime::currentDateTime().toString("dd/MM/yyyy hh:mm:ss"); QString txt = QString("[%1] ").arg(dt); switch (type) { case QtDebugMsg: txt += QString("{Debug} \t\t %1").arg(ms

我想知道如何将调试信息保存到名为“LogFile yyymmddhhmmss”的文件中。我使用这样的公式:

QString dt = QDateTime::currentDateTime().toString("dd/MM/yyyy hh:mm:ss");
QString txt = QString("[%1] ").arg(dt);

switch (type)
{
  case QtDebugMsg:
     txt += QString("{Debug} \t\t %1").arg(msg);
     break;
  case QtWarningMsg:
     txt += QString("{Warning} \t %1").arg(msg);
     break;
  case QtCriticalMsg:
     txt += QString("{Critical} \t %1").arg(msg);
     break;
  case QtFatalMsg:
     txt += QString("{Fatal} \t\t %1").arg(msg);
     abort();
     break;
}

QFile outFile( QString("LogFile.log");
outFile.open(QIODevice::WriteOnly | QIODevice::Append);

QTextStream textStream(&outFile);
textStream << txt << endl;
QString dt=QDateTime::currentDateTime().toString(“dd/MM/yyyy hh:MM:ss”);
QString txt=QString([%1]”)。arg(dt);
开关(类型)
{
案例QtDebugMsg:
txt+=QString(“{Debug}\t\t%1”).arg(msg);
打破
案例QtWarningMsg:
txt+=QString(“{Warning}\t%1”).arg(msg);
打破
案例QTSG:
txt+=QString(“{Critical}\t%1”).arg(msg);
打破
案例QTALMSG:
txt+=QString(“{Fatal}\t\t%1”).arg(msg);
中止();
打破
}
QFile输出文件(QString(“LogFile.log”);
open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream textStream(&outFile);
textStream试试这个:

QString dt = "LogFile";
dt += QDateTime::currentDateTime().toString("dd/MM/yyyy hh:mm:ss");
dt.remove("/");
dt.remove(":");
dt += ".log";
QFile outFile( dt );
utFile.open(QIODevice::WriteOnly | QIODevice::Append);

QTextStream textStream(&outFile);
textStream <<"test";
outFile.close();

我认为更好的答案是使用单个datetime对象(
curdt
,在我的示例中),然后从一个对象中生成两种类型的字符串。一种用于日志中的日志信息,另一种用于日志文件名本身。我们希望使用当前日期/时间的单个副本,以便在日志文件中写入的是相同的日期/时间(以不同的格式)显示在日志文件名中。如果调用两次
QDateTime::currentDateTime()
可能会得到两个稍微不同的时间

/* Store a copy of the current date and time */
QDateTime curdt = QDateTime::currentDateTime();

/* Convert it to a string for logging */
QString dtstr = curdt.toString("dd/MM/yyyy hh:mm:ss");
QString txt = QString("[%1] ").arg(dtstr);

/* Create a filename for the log */
QString logfilename = "LogFile-" + curdt.toString("yyyyMMddhhmmss") + ".log";

[snip]

QFile outFile(logfilename);

@海德:我认为这对OP很重要,但现在我理解了所有内容,并以更简单的方式更新了答案。谢谢你的提示。太好了,这是我一直在寻找的!事实上,在写问题的时候,这需要两个不同的
来触发
调用,因为日期组件的顺序不同。我需要一些时间用这个来重写我的答案格式,但你已经这样做了,所以我不会重写它(我对你的答案投了赞成票)。没问题。谢谢。这一个至少处理两种格式的日期/时间,并使用当前日期和时间的一个副本来完成。
/* Store a copy of the current date and time */
QDateTime curdt = QDateTime::currentDateTime();

/* Convert it to a string for logging */
QString dtstr = curdt.toString("dd/MM/yyyy hh:mm:ss");
QString txt = QString("[%1] ").arg(dtstr);

/* Create a filename for the log */
QString logfilename = "LogFile-" + curdt.toString("yyyyMMddhhmmss") + ".log";

[snip]

QFile outFile(logfilename);