Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of libmDot by
MTS-Utils/MTSLog.h@11:9938ba31d428, 2016-03-29 (annotated)
- Committer:
- Mike Fiore
- Date:
- Tue Mar 29 10:18:28 2016 -0500
- Revision:
- 11:9938ba31d428
- Parent:
- 9:ebf682e616d0
update to version 1.0.7 of mDot library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Mike Fiore |
1:9f30fbe9e9c1 | 1 | #ifndef MTSLOG_H |
Mike Fiore |
1:9f30fbe9e9c1 | 2 | #define MTSLOG_H |
Mike Fiore |
1:9f30fbe9e9c1 | 3 | |
Mike Fiore |
11:9938ba31d428 | 4 | #include <string> |
Mike Fiore |
11:9938ba31d428 | 5 | |
Mike Fiore |
11:9938ba31d428 | 6 | inline const char* className(const std::string& prettyFunction) |
Mike Fiore |
11:9938ba31d428 | 7 | { |
Mike Fiore |
11:9938ba31d428 | 8 | size_t colons = prettyFunction.find_last_of("::"); |
Mike Fiore |
11:9938ba31d428 | 9 | if (colons == std::string::npos) |
Mike Fiore |
11:9938ba31d428 | 10 | return ""; |
Mike Fiore |
11:9938ba31d428 | 11 | size_t begin = prettyFunction.substr(0,colons).rfind(" ") + 1; |
Mike Fiore |
11:9938ba31d428 | 12 | size_t end = colons - begin; |
Mike Fiore |
11:9938ba31d428 | 13 | |
Mike Fiore |
11:9938ba31d428 | 14 | return prettyFunction.substr(begin,end).c_str(); |
Mike Fiore |
11:9938ba31d428 | 15 | } |
Mike Fiore |
11:9938ba31d428 | 16 | |
Mike Fiore |
11:9938ba31d428 | 17 | #define __CLASSNAME__ className(__PRETTY_FUNCTION__) |
Mike Fiore |
11:9938ba31d428 | 18 | |
Mike Fiore |
11:9938ba31d428 | 19 | |
Mike Fiore |
1:9f30fbe9e9c1 | 20 | #ifdef MTS_DEBUG |
Mike Fiore |
1:9f30fbe9e9c1 | 21 | #define logFatal(format, ...) \ |
Mike Fiore |
11:9938ba31d428 | 22 | mts::MTSLog::printMessage(mts::MTSLog::FATAL_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::FATAL_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 23 | #define logError(format, ...) \ |
Mike Fiore |
11:9938ba31d428 | 24 | mts::MTSLog::printMessage(mts::MTSLog::ERROR_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::ERROR_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 25 | #define logWarning(format, ...) \ |
Mike Fiore |
11:9938ba31d428 | 26 | mts::MTSLog::printMessage(mts::MTSLog::WARNING_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::WARNING_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 27 | #define logInfo(format, ...) \ |
Mike Fiore |
11:9938ba31d428 | 28 | mts::MTSLog::printMessage(mts::MTSLog::INFO_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::INFO_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 29 | #define logDebug(format, ...) \ |
Mike Fiore |
11:9938ba31d428 | 30 | mts::MTSLog::printMessage(mts::MTSLog::DEBUG_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::DEBUG_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 31 | #define logTrace(format, ...) \ |
Mike Fiore |
11:9938ba31d428 | 32 | mts::MTSLog::printMessage(mts::MTSLog::TRACE_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::TRACE_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 33 | #else |
Mike Fiore |
1:9f30fbe9e9c1 | 34 | #define logFatal(format, ...) \ |
Mike Fiore |
7:683dba5d576f | 35 | mts::MTSLog::printMessage(mts::MTSLog::FATAL_LEVEL, "[%s] " format "\r\n", mts::MTSLog::FATAL_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 36 | #define logError(format, ...) \ |
Mike Fiore |
7:683dba5d576f | 37 | mts::MTSLog::printMessage(mts::MTSLog::ERROR_LEVEL, "[%s] " format "\r\n", mts::MTSLog::ERROR_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 38 | #define logWarning(format, ...) \ |
Mike Fiore |
7:683dba5d576f | 39 | mts::MTSLog::printMessage(mts::MTSLog::WARNING_LEVEL, "[%s] " format "\r\n", mts::MTSLog::WARNING_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 40 | #define logInfo(format, ...) \ |
Mike Fiore |
7:683dba5d576f | 41 | mts::MTSLog::printMessage(mts::MTSLog::INFO_LEVEL, "[%s] " format "\r\n", mts::MTSLog::INFO_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 42 | #define logDebug(format, ...) \ |
Mike Fiore |
7:683dba5d576f | 43 | mts::MTSLog::printMessage(mts::MTSLog::DEBUG_LEVEL, "[%s] " format "\r\n", mts::MTSLog::DEBUG_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 44 | #define logTrace(format, ...) \ |
Mike Fiore |
7:683dba5d576f | 45 | mts::MTSLog::printMessage(mts::MTSLog::TRACE_LEVEL, "[%s] " format "\r\n", mts::MTSLog::TRACE_LABEL, ##__VA_ARGS__) |
Mike Fiore |
1:9f30fbe9e9c1 | 46 | #endif |
Mike Fiore |
1:9f30fbe9e9c1 | 47 | |
Mike Fiore |
1:9f30fbe9e9c1 | 48 | namespace mts { |
Mike Fiore |
1:9f30fbe9e9c1 | 49 | |
Mike Fiore |
1:9f30fbe9e9c1 | 50 | class MTSLog |
Mike Fiore |
1:9f30fbe9e9c1 | 51 | { |
Mike Fiore |
1:9f30fbe9e9c1 | 52 | public: |
Mike Fiore |
1:9f30fbe9e9c1 | 53 | |
Mike Fiore |
1:9f30fbe9e9c1 | 54 | /** Enum of log levels. |
Mike Fiore |
1:9f30fbe9e9c1 | 55 | */ |
Mike Fiore |
1:9f30fbe9e9c1 | 56 | enum logLevel { |
Mike Fiore |
1:9f30fbe9e9c1 | 57 | NONE_LEVEL = 0, |
Mike Fiore |
1:9f30fbe9e9c1 | 58 | FATAL_LEVEL = 1, |
Mike Fiore |
1:9f30fbe9e9c1 | 59 | ERROR_LEVEL = 2, |
Mike Fiore |
1:9f30fbe9e9c1 | 60 | WARNING_LEVEL = 3, |
Mike Fiore |
1:9f30fbe9e9c1 | 61 | INFO_LEVEL = 4, |
Mike Fiore |
1:9f30fbe9e9c1 | 62 | DEBUG_LEVEL = 5, |
Mike Fiore |
1:9f30fbe9e9c1 | 63 | TRACE_LEVEL = 6 |
Mike Fiore |
1:9f30fbe9e9c1 | 64 | }; |
Mike Fiore |
1:9f30fbe9e9c1 | 65 | |
Mike Fiore |
1:9f30fbe9e9c1 | 66 | /** Print log message. |
Mike Fiore |
1:9f30fbe9e9c1 | 67 | */ |
Mike Fiore |
1:9f30fbe9e9c1 | 68 | static void printMessage(int level, const char* format, ...); |
Mike Fiore |
1:9f30fbe9e9c1 | 69 | |
Mike Fiore |
1:9f30fbe9e9c1 | 70 | /** Determine if the given level is currently printable. |
Mike Fiore |
1:9f30fbe9e9c1 | 71 | */ |
Mike Fiore |
1:9f30fbe9e9c1 | 72 | static bool printable(int level); |
Mike Fiore |
1:9f30fbe9e9c1 | 73 | |
Mike Fiore |
1:9f30fbe9e9c1 | 74 | /** Set log level |
Mike Fiore |
1:9f30fbe9e9c1 | 75 | * Messages with lower priority than the current level will not be printed. |
Mike Fiore |
1:9f30fbe9e9c1 | 76 | * If the level is set to NONE, no messages will print. |
Mike Fiore |
1:9f30fbe9e9c1 | 77 | */ |
Mike Fiore |
1:9f30fbe9e9c1 | 78 | static void setLogLevel(int level); |
Mike Fiore |
1:9f30fbe9e9c1 | 79 | |
Mike Fiore |
1:9f30fbe9e9c1 | 80 | /** Get the current log level. |
Mike Fiore |
1:9f30fbe9e9c1 | 81 | */ |
Mike Fiore |
1:9f30fbe9e9c1 | 82 | static int getLogLevel(); |
Mike Fiore |
1:9f30fbe9e9c1 | 83 | |
Mike Fiore |
1:9f30fbe9e9c1 | 84 | /** Get string representation of the current log level. |
Mike Fiore |
1:9f30fbe9e9c1 | 85 | */ |
Mike Fiore |
1:9f30fbe9e9c1 | 86 | static const char* getLogLevelString(); |
Mike Fiore |
1:9f30fbe9e9c1 | 87 | |
Mike Fiore |
1:9f30fbe9e9c1 | 88 | static const char* NONE_LABEL; |
Mike Fiore |
1:9f30fbe9e9c1 | 89 | static const char* FATAL_LABEL; |
Mike Fiore |
1:9f30fbe9e9c1 | 90 | static const char* ERROR_LABEL; |
Mike Fiore |
1:9f30fbe9e9c1 | 91 | static const char* WARNING_LABEL; |
Mike Fiore |
1:9f30fbe9e9c1 | 92 | static const char* INFO_LABEL; |
Mike Fiore |
1:9f30fbe9e9c1 | 93 | static const char* DEBUG_LABEL; |
Mike Fiore |
1:9f30fbe9e9c1 | 94 | static const char* TRACE_LABEL; |
Mike Fiore |
1:9f30fbe9e9c1 | 95 | |
Mike Fiore |
1:9f30fbe9e9c1 | 96 | private: |
Mike Fiore |
1:9f30fbe9e9c1 | 97 | |
Mike Fiore |
1:9f30fbe9e9c1 | 98 | /** Constructor |
Mike Fiore |
1:9f30fbe9e9c1 | 99 | */ |
Mike Fiore |
1:9f30fbe9e9c1 | 100 | MTSLog(); |
Mike Fiore |
1:9f30fbe9e9c1 | 101 | |
Mike Fiore |
1:9f30fbe9e9c1 | 102 | static int currentLevel; |
Mike Fiore |
1:9f30fbe9e9c1 | 103 | |
Mike Fiore |
1:9f30fbe9e9c1 | 104 | }; |
Mike Fiore |
1:9f30fbe9e9c1 | 105 | |
Mike Fiore |
1:9f30fbe9e9c1 | 106 | } |
Mike Fiore |
1:9f30fbe9e9c1 | 107 | |
Mike Fiore |
1:9f30fbe9e9c1 | 108 | #endif |