1 /* 2 * Stellarium 3 * Copyright (C) 2009 Fabien Chereau 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. 18 */ 19 20 #ifndef STELLOGGER_HPP 21 #define STELLOGGER_HPP 22 23 #include <QString> 24 #include <QFile> 25 #include <QMutex> 26 27 //! @class StelLogger 28 //! Class wit only static members used to manage logging for Stellarium. 29 //! The debugLogHandler() method allow to defined it as a standard Qt messages handler 30 //! which is then used by qDebug, qWarning and qFatal. 31 class StelLogger 32 { 33 public: 34 //! Create and initialize the log file. 35 //! Prepend system information before any debugging output. 36 static void init(const QString& logFilePath); 37 38 //! Deinitialize the log file. 39 //! Must be called after init() was called. 40 static void deinit(); 41 42 //! Handler for qDebug() and friends. Writes message to log file at $USERDIR/log.txt and echoes to stderr. 43 static void debugLogHandler(QtMsgType type, const QMessageLogContext& ctx, const QString& str); 44 45 //! Return a copy of text of the log file. getLog()46 static const QString& getLog() {return log;} 47 getLogFileName()48 static QString getLogFileName() {return logFile.fileName();} 49 50 //! Write the message plus a newline to the log file at $USERDIR/log.txt. 51 //! @param msg message to write. 52 //! If you call this function the message will be only in the log file, 53 //! not on the console like with qDebug(). 54 static void writeLog(QString msg); 55 56 private: 57 static QFile logFile; 58 static QString log; 59 static QMutex fileMutex; 60 61 static QString getMsvcVersionString(int ver); 62 }; 63 64 #endif // STELLOGGER_HPP 65