我想知道如何将调试信息保存到名为" LogFile-YYYYMMDDHHMMSS"的文件中。我使用这样的公式:
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;
答案 0 :(得分:1)
试试这个:
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();
您应删除此符号,因为操作系统禁止在文件路径中使用此符号,并且不会保存您的文件。
或者使用更简单的方式:
QString dt = "LogFile";
dt += QDateTime::currentDateTime().toString("ddMMyyyy hhmmss");
dt += ".log";
答案 1 :(得分:1)
我认为更好的答案是使用单个日期时间对象(在我的示例中为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);