Logging in QFile
Verfasst: 20. Juni 2012 10:15
Hi ich versuche aktuell ein Programm mit diversen Klassen zu entwickeln und will damit alle Klassen in die selbe LOG-Datei schreiben können eine Oberklasse schreiben von der alle anderen Klassen erben.
meine Header-Datei sieht wie folgt aus
class Mainfunktions
{
public:
Mainfunktions(void);
~Mainfunktions(void);
void writeLog(QString typ, QString msg);
private:
QElapsedTimer timer;
static QFile file;
};
die Implementierung wie folgt:
Mainfunktions::Mainfunktions(void)
{
timer.start();
file.setFileName("log.txt");
file.open(QIODevice::WriteOnly|QIODevice::Text);
}
Mainfunktions::~Mainfunktions(void)
{
QString text = QString::number(timer.elapsed());
writeLog("Info","Zeit von Mainfunktions Beträgt " + QString::number(timer.elapsed()) + " millisekunde");
file.close();
}
void Mainfunktions::writeLog(QString typ, QString msg)
{
QTextStream out(&file);
out << QDateTime::currentDateTimeUtc().toString() << " " << typ << ": " << msg << "\n";
}
das ganze habe ich jetzt erst einmal an eine Klasse vererbt und eingebunden will ich das ganze jetzt übersetzen erhalte ich folgende Fehlermeldung
1>mainfunktions.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static class QFile Mainfunktions::file" (?file@Mainfunktions@@0VQFile@@A)".
Zudem bin ich mir beim Konstruktor und destruktor unsicher da wenn ich mehrere Klassen haben die von der Klasse erben die Datei ja mehrfach versucht wird zu öffnen bzw zu schließen.
Kann mir jemand nen kleinen Hinweis geben woher zum einen der Fehler kommt oder wie man an ein solches logging heran gehen kann so das es Funktioniert?
danke schon mal
Schubi
meine Header-Datei sieht wie folgt aus
class Mainfunktions
{
public:
Mainfunktions(void);
~Mainfunktions(void);
void writeLog(QString typ, QString msg);
private:
QElapsedTimer timer;
static QFile file;
};
die Implementierung wie folgt:
Mainfunktions::Mainfunktions(void)
{
timer.start();
file.setFileName("log.txt");
file.open(QIODevice::WriteOnly|QIODevice::Text);
}
Mainfunktions::~Mainfunktions(void)
{
QString text = QString::number(timer.elapsed());
writeLog("Info","Zeit von Mainfunktions Beträgt " + QString::number(timer.elapsed()) + " millisekunde");
file.close();
}
void Mainfunktions::writeLog(QString typ, QString msg)
{
QTextStream out(&file);
out << QDateTime::currentDateTimeUtc().toString() << " " << typ << ": " << msg << "\n";
}
das ganze habe ich jetzt erst einmal an eine Klasse vererbt und eingebunden will ich das ganze jetzt übersetzen erhalte ich folgende Fehlermeldung
1>mainfunktions.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static class QFile Mainfunktions::file" (?file@Mainfunktions@@0VQFile@@A)".
Zudem bin ich mir beim Konstruktor und destruktor unsicher da wenn ich mehrere Klassen haben die von der Klasse erben die Datei ja mehrfach versucht wird zu öffnen bzw zu schließen.
Kann mir jemand nen kleinen Hinweis geben woher zum einen der Fehler kommt oder wie man an ein solches logging heran gehen kann so das es Funktioniert?
danke schon mal
Schubi