Library for LoRa communication using MultiTech MDOT.
Dependents: mDot_test_rx adc_sensor_lora mDotEVBM2X mDot_AT_firmware ... more
MTSLog.h
00001 #ifndef MTSLOG_H 00002 #define MTSLOG_H 00003 00004 #include <string> 00005 00006 inline const char* className(const std::string& prettyFunction) 00007 { 00008 size_t colons = prettyFunction.find_last_of("::"); 00009 if (colons == std::string::npos) 00010 return ""; 00011 size_t begin = prettyFunction.substr(0,colons).rfind(" ") + 1; 00012 size_t end = colons - begin; 00013 00014 return prettyFunction.substr(begin,end).c_str(); 00015 } 00016 00017 #define __CLASSNAME__ className(__PRETTY_FUNCTION__) 00018 00019 00020 #ifdef MTS_DEBUG 00021 #define logFatal(format, ...) \ 00022 mts::MTSLog::printMessage(mts::MTSLog::FATAL_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::FATAL_LABEL, ##__VA_ARGS__) 00023 #define logError(format, ...) \ 00024 mts::MTSLog::printMessage(mts::MTSLog::ERROR_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::ERROR_LABEL, ##__VA_ARGS__) 00025 #define logWarning(format, ...) \ 00026 mts::MTSLog::printMessage(mts::MTSLog::WARNING_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::WARNING_LABEL, ##__VA_ARGS__) 00027 #define logInfo(format, ...) \ 00028 mts::MTSLog::printMessage(mts::MTSLog::INFO_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::INFO_LABEL, ##__VA_ARGS__) 00029 #define logDebug(format, ...) \ 00030 mts::MTSLog::printMessage(mts::MTSLog::DEBUG_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::DEBUG_LABEL, ##__VA_ARGS__) 00031 #define logTrace(format, ...) \ 00032 mts::MTSLog::printMessage(mts::MTSLog::TRACE_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::TRACE_LABEL, ##__VA_ARGS__) 00033 #else 00034 #define logFatal(format, ...) \ 00035 mts::MTSLog::printMessage(mts::MTSLog::FATAL_LEVEL, "[%s] " format "\r\n", mts::MTSLog::FATAL_LABEL, ##__VA_ARGS__) 00036 #define logError(format, ...) \ 00037 mts::MTSLog::printMessage(mts::MTSLog::ERROR_LEVEL, "[%s] " format "\r\n", mts::MTSLog::ERROR_LABEL, ##__VA_ARGS__) 00038 #define logWarning(format, ...) \ 00039 mts::MTSLog::printMessage(mts::MTSLog::WARNING_LEVEL, "[%s] " format "\r\n", mts::MTSLog::WARNING_LABEL, ##__VA_ARGS__) 00040 #define logInfo(format, ...) \ 00041 mts::MTSLog::printMessage(mts::MTSLog::INFO_LEVEL, "[%s] " format "\r\n", mts::MTSLog::INFO_LABEL, ##__VA_ARGS__) 00042 #define logDebug(format, ...) \ 00043 mts::MTSLog::printMessage(mts::MTSLog::DEBUG_LEVEL, "[%s] " format "\r\n", mts::MTSLog::DEBUG_LABEL, ##__VA_ARGS__) 00044 #define logTrace(format, ...) \ 00045 mts::MTSLog::printMessage(mts::MTSLog::TRACE_LEVEL, "[%s] " format "\r\n", mts::MTSLog::TRACE_LABEL, ##__VA_ARGS__) 00046 #endif 00047 00048 namespace mts { 00049 00050 class MTSLog 00051 { 00052 public: 00053 00054 /** Enum of log levels. 00055 */ 00056 enum logLevel { 00057 NONE_LEVEL = 0, 00058 FATAL_LEVEL = 1, 00059 ERROR_LEVEL = 2, 00060 WARNING_LEVEL = 3, 00061 INFO_LEVEL = 4, 00062 DEBUG_LEVEL = 5, 00063 TRACE_LEVEL = 6 00064 }; 00065 00066 /** Print log message. 00067 */ 00068 static void printMessage(int level, const char* format, ...); 00069 00070 /** Determine if the given level is currently printable. 00071 */ 00072 static bool printable(int level); 00073 00074 /** Set log level 00075 * Messages with lower priority than the current level will not be printed. 00076 * If the level is set to NONE, no messages will print. 00077 */ 00078 static void setLogLevel(int level); 00079 00080 /** Get the current log level. 00081 */ 00082 static int getLogLevel(); 00083 00084 /** Get string representation of the current log level. 00085 */ 00086 static const char* getLogLevelString(); 00087 00088 static const char* NONE_LABEL; 00089 static const char* FATAL_LABEL; 00090 static const char* ERROR_LABEL; 00091 static const char* WARNING_LABEL; 00092 static const char* INFO_LABEL; 00093 static const char* DEBUG_LABEL; 00094 static const char* TRACE_LABEL; 00095 00096 private: 00097 00098 /** Constructor 00099 */ 00100 MTSLog(); 00101 00102 static int currentLevel; 00103 00104 }; 00105 00106 } 00107 00108 #endif
Generated on Wed Jul 13 2022 11:18:29 by 1.7.2