| 1 | /** |
|---|
| 2 | * @file Logger.h |
|---|
| 3 | * Defines the Logger class |
|---|
| 4 | * @author Tomas Urban |
|---|
| 5 | * @version 0.2 |
|---|
| 6 | * @date 23/07/2009 |
|---|
| 7 | */ |
|---|
| 8 | #ifndef LOGGER_H |
|---|
| 9 | #define LOGGER_H |
|---|
| 10 | |
|---|
| 11 | #include <boost/thread/mutex.hpp> |
|---|
| 12 | #include "Helper/Singleton.h" |
|---|
| 13 | |
|---|
| 14 | /** |
|---|
| 15 | * Singleton class for logging. The class uses std::clog as the output channel. All logging |
|---|
| 16 | * operations are thread safe. |
|---|
| 17 | */ |
|---|
| 18 | class Logger : public Singleton<Logger> |
|---|
| 19 | { |
|---|
| 20 | private: |
|---|
| 21 | friend class Singleton<Logger>; |
|---|
| 22 | Logger(void); |
|---|
| 23 | int m_nLogMode; // Logging mode |
|---|
| 24 | boost::mutex m_mutex; // Logging lock |
|---|
| 25 | void LogLine(const std::string sText); |
|---|
| 26 | public: |
|---|
| 27 | ~Logger(void); |
|---|
| 28 | |
|---|
| 29 | /** |
|---|
| 30 | * No logging operations are with exeption allowed when this mode is set. It should not be combined |
|---|
| 31 | * with other modes. |
|---|
| 32 | */ |
|---|
| 33 | static const int LOG_NOTHING = 0x00; |
|---|
| 34 | /** |
|---|
| 35 | * Important information statements are allowed to be printed to the log when this |
|---|
| 36 | * mode is active. This mode can be combined with other modes. It is one of the default |
|---|
| 37 | * modes. |
|---|
| 38 | */ |
|---|
| 39 | static const int LOG_INFO = 0x01; |
|---|
| 40 | /** |
|---|
| 41 | * Critical errors are allowed to be printed to the log when this mode is active. This |
|---|
| 42 | * mode can be combined with other modes. It is one of the default modes. |
|---|
| 43 | */ |
|---|
| 44 | static const int LOG_ERRORS = 0x02; |
|---|
| 45 | /** |
|---|
| 46 | * Minor warnings are allowed to be printed to the log when this mode is active. This |
|---|
| 47 | * mode can be combined with other modes. |
|---|
| 48 | */ |
|---|
| 49 | static const int LOG_WARNINGS = 0x04; |
|---|
| 50 | /** |
|---|
| 51 | * Hexa dump of captured messages is allowed to be printed to the log when this mode |
|---|
| 52 | * is active. This mode can be combined with other modes. |
|---|
| 53 | */ |
|---|
| 54 | static const int LOG_CAPTURE = 0x08; |
|---|
| 55 | /** |
|---|
| 56 | * Debugging statements are allowed to be printed to the log when this mode is active. This |
|---|
| 57 | * mode can be combined with other modes. |
|---|
| 58 | */ |
|---|
| 59 | static const int LOG_DEBUG = 0x10; |
|---|
| 60 | /** |
|---|
| 61 | * All logging operations are allowed with this mode. It should not be combined with other |
|---|
| 62 | * modes. |
|---|
| 63 | */ |
|---|
| 64 | static const int LOG_ALL = LOG_INFO | LOG_ERRORS | LOG_WARNINGS | LOG_CAPTURE | LOG_DEBUG; |
|---|
| 65 | /** |
|---|
| 66 | * Sets the logging mode. Individual logging methods are allowed to write to the logging output |
|---|
| 67 | * only if the particular logging mode is active. |
|---|
| 68 | * |
|---|
| 69 | * @param nMode Logging mode to be activated. Several modes can be combined using the bitwise or |
|---|
| 70 | * operator. The following modes are provided:\n |
|---|
| 71 | * #LOG_INFO\n |
|---|
| 72 | * #LOG_ERRORS\n |
|---|
| 73 | * #LOG_WARNINGS\n |
|---|
| 74 | * #LOG_CAPTURE\n |
|---|
| 75 | * #LOG_DEBUG\n |
|---|
| 76 | * #LOG_NOTHING\n |
|---|
| 77 | * #LOG_ALL |
|---|
| 78 | */ |
|---|
| 79 | void SetLoggingMode(int nMode) { m_nLogMode = nMode; } |
|---|
| 80 | /** |
|---|
| 81 | * Returns the active logging mode. Individual logging methods are allowed to write to the |
|---|
| 82 | * logging output only if the particular logging mode is active. |
|---|
| 83 | * |
|---|
| 84 | * @return active logging mode |
|---|
| 85 | */ |
|---|
| 86 | int GetLoggingMode() const { return m_nLogMode; } |
|---|
| 87 | /** |
|---|
| 88 | * Adds an informative statement to the log. #LOG_INFO mode has to be active, otherwise the |
|---|
| 89 | * method is not executed. |
|---|
| 90 | * |
|---|
| 91 | * @param sInfo information to be logged |
|---|
| 92 | */ |
|---|
| 93 | void LogInfo(const std::string sInfo); |
|---|
| 94 | /** |
|---|
| 95 | * Adds an error statement to the log. #LOG_ERRORS mode has to be active, otherwise the |
|---|
| 96 | * method is not executed. |
|---|
| 97 | * |
|---|
| 98 | * @param sError error to be logged |
|---|
| 99 | */ |
|---|
| 100 | void LogError(const std::string sError); |
|---|
| 101 | /** |
|---|
| 102 | * Adds a warning to the log. #LOG_WARNINGS mode has to be active, otherwise the |
|---|
| 103 | * method is not executed. |
|---|
| 104 | * |
|---|
| 105 | * @param sWarning warning to be logged |
|---|
| 106 | */ |
|---|
| 107 | void LogWarning(const std::string sWarning); |
|---|
| 108 | /** |
|---|
| 109 | * Writes binary dump of captured data to the log. #LOG_CAPTURE mode has to be active, |
|---|
| 110 | * otherwise the method is not executed. |
|---|
| 111 | * |
|---|
| 112 | * @param sData captured data to be logged |
|---|
| 113 | */ |
|---|
| 114 | void LogCapture(const std::string sData); |
|---|
| 115 | /** |
|---|
| 116 | * Adds a debugging statement to the log. #LOG_DEBUG mode has to be active, otherwise the |
|---|
| 117 | * method is not executed. |
|---|
| 118 | * |
|---|
| 119 | * @param sDebugData information to be logged |
|---|
| 120 | */ |
|---|
| 121 | void LogDebug(const std::string sDebugData); |
|---|
| 122 | }; |
|---|
| 123 | |
|---|
| 124 | #endif |
|---|