summaryrefslogtreecommitdiffstats
path: root/src/common/logger.h
diff options
context:
space:
mode:
authorerihel <erihel@gmail.com>2012-07-04 18:04:34 +0200
committererihel <erihel@gmail.com>2012-07-04 18:04:34 +0200
commit4a839d8734cd4c56ab0f7a3b1e60c0b451c39a9d (patch)
treea98913b7504c51b0ece167f43923867f277fab39 /src/common/logger.h
parentca254d70b6501cbd8954c5764fec7f4665b53bfd (diff)
downloadcolobot-4a839d8734cd4c56ab0f7a3b1e60c0b451c39a9d.tar.gz
colobot-4a839d8734cd4c56ab0f7a3b1e60c0b451c39a9d.tar.bz2
colobot-4a839d8734cd4c56ab0f7a3b1e60c0b451c39a9d.zip
* Added CLogger class for loggin info to console or file
* Added CSoundInterface * Added basic plugin interface
Diffstat (limited to 'src/common/logger.h')
-rw-r--r--src/common/logger.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/common/logger.h b/src/common/logger.h
new file mode 100644
index 0000000..1b3829c
--- /dev/null
+++ b/src/common/logger.h
@@ -0,0 +1,111 @@
+// * This file is part of the COLOBOT source code
+// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
+// *
+// * This program is free software: you can redistribute it and/or modify
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation, either version 3 of the License, or
+// * (at your option) any later version.
+// *
+// * This program is distributed in the hope that it will be useful,
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// * GNU General Public License for more details.
+// *
+// * You should have received a copy of the GNU General Public License
+// * along with this program. If not, see http://www.gnu.org/licenses/.
+
+// logger.h
+
+
+#pragma once
+
+#include <string>
+#include <cstdarg>
+
+#include <common/singleton.h>
+
+/**
+ * @file common/logger.h
+ * @brief Class for loggin information to file or console
+ */
+
+
+/**
+ * \public
+ * \enum LogType common/logger.h
+ * \brief Enum representing log level
+**/
+enum LogType
+{
+ LOG_INFO = 1, /*!< lowest level, information */
+ LOG_WARN = 2, /*!< warning */
+ LOG_ERROR = 3, /*!< error */
+ LOG_NONE = 4 /*!< none level, used for custom messages */
+};
+
+
+/**
+* @class CLogger
+*
+* @brief Class for loggin information to file or console
+*
+*/
+class CLogger : public CSingleton<CLogger>
+{
+ public:
+ CLogger();
+ ~CLogger();
+
+ /** Write message to console or file
+ * @param const char str - message to write
+ * @param ... - additional arguments
+ */
+ void Message(const char *str, ...);
+
+ /** Write message to console or file with LOG_INFO level
+ * @param const char str - message to write
+ * @param ... - additional arguments
+ */
+ void Info(const char *str, ...);
+
+ /** Write message to console or file with LOG_WARN level
+ * @param const char str - message to write
+ * @param ... - additional arguments
+ */
+ void Warn(const char *str, ...);
+
+ /** Write message to console or file with LOG_ERROR level
+ * @param const char str - message to write
+ * @param ... - additional arguments
+ */
+ void Error(const char *str, ...);
+
+ /** Set output file to write logs to
+ * @param std::string filename - output file to write to
+ */
+ void SetOutputFile(std::string filename);
+
+ /** Set log level. Logs with level below will not be shown
+ * @param LogType level - minimum log level to write
+ */
+ void SetLogLevel(LogType level);
+
+ static CLogger& GetInstance();
+ static CLogger* GetInstancePointer();
+
+ private:
+ std::string mFilename;
+ FILE *mFile;
+ LogType mLogLevel;
+
+ void Open();
+ void Close();
+ bool IsOpened();
+ void Log(LogType type, const char* str, va_list args);
+};
+
+
+//! Global function to get Logger instance
+inline CLogger* GetLogger() {
+ return CLogger::GetInstancePointer();
+}