defuze.me  Client
logger.cpp
00001 /**************************************************************************
00002 ** defuze.me Epitech Innovative Project
00003 **
00004 ** Copyright 2010
00005 **   Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard
00006 **   Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier
00007 **
00008 ** All rights reserved.
00009 **************************************************************************/
00010 
00011 #include "logger.hpp"
00012 #include <QtCore/QString>
00013 #include <QtCore/QDateTime>
00014 #include <QtCore/QDir>
00015 #include <QDebug>
00016 
00017 Logger::Logger()
00018 {
00019     QDir dir;
00020     dir.mkpath(QDesktopServices::storageLocation(QDesktopServices::DataLocation) + gl_MAIN_LOG_DIR);// Create the logs directory if needed.
00021     logFile = new QFile(logFileName());
00022     if (logFile->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
00023     {
00024         qDebug() << "Log file is" << QFileInfo(*logFile).absoluteFilePath();
00025         logFile->write(logHeader());
00026     }
00027     else
00028     {
00029         qDebug() << "Cannot use Log file" << QFileInfo(*logFile).absoluteFilePath() << ": error" << logFile->error();
00030     }
00031 }
00032 
00033 Logger::~Logger()
00034 {
00035     logFile->close();
00036     delete logFile;
00037 }
00038 
00039 void Logger::log(const QString &message)
00040 {
00041     Logger::instance().updateLog(message);
00042 }
00043 
00044 void Logger::updateLog(QString msg) const
00045 {
00046     msg += "\n";
00047     msg = ". " + msg;
00048     if (logFile->isOpen())
00049     {
00050         logFile->write(msg.toAscii());
00051         logFile->flush();
00052     }
00053 }
00054 
00055 QByteArray Logger::logHeader() const
00056 {
00057     QString header(80, '#');
00058     header += "\n";
00059     return header.toAscii();
00060 }
00061 
00062 QString Logger::logFileName() const
00063 {
00064     return QDesktopServices::storageLocation(QDesktopServices::DataLocation) + gl_MAIN_LOG_DIR +
00065             "/" + gl_MAIN_LOG_FILE + "_" +
00066             QDateTime::currentDateTime().toString("yyyyMMdd") + "." + gl_MAIN_LOG_EXT;
00067 }