From 8b07e4a67d89fa158e77ac8f557ea5c101860b92 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Wed, 7 Dec 2016 08:54:42 -0800 Subject: [PATCH] Modify logging to allow region to be prepended to log message (#1046) This commit adds a new config `OPENTHREAD_CONFIG_LOG_PREPEND_REGION` to OpenThread. This config option allows user to decide if OT logs should include/prepend the log region in the log message or exclude it. By default it is enabled. --- src/core/common/logging.cpp | 60 +++++++++++++++++++++++ src/core/common/logging.hpp | 48 ++++++++++++++++-- src/core/openthread-core-default-config.h | 8 +++ 3 files changed, 111 insertions(+), 5 deletions(-) diff --git a/src/core/common/logging.cpp b/src/core/common/logging.cpp index d8a60fe4f..b71d2c01c 100644 --- a/src/core/common/logging.cpp +++ b/src/core/common/logging.cpp @@ -148,6 +148,66 @@ void otDump(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aId, const otLogDump("%s", buf); } +#ifdef OPENTHREAD_CONFIG_LOG_PREPEND_REGION +const char *otLogRegionToString(otLogRegion aRegion) +{ + const char *retval; + + switch (aRegion) + { + case kLogRegionApi: + retval = "-API-----"; + break; + + case kLogRegionMle: + retval = "-MLE-----"; + break; + + case kLogRegionArp: + retval = "-ARP-----"; + break; + + case kLogRegionNetData: + retval = "-N-DATA--"; + break; + + case kLogRegionIcmp: + retval = "-ICMP----"; + break; + + case kLogRegionIp6: + retval = "-IP6-----"; + break; + + case kLogRegionMac: + retval = "-MAC-----"; + break; + + case kLogRegionMem: + retval = "-MEM-----"; + break; + + case kLogRegionNcp: + retval = "-NCP-----"; + break; + + case kLogRegionMeshCoP: + retval = "-MESH-CP-"; + break; + + case kLogRegionNetDiag: + retval = "-DIAG----"; + break; + + default: + retval = "---------"; + break; + } + + return retval; +} +#endif // OPENTHREAD_CONFIG_LOG_PREPEND_REGION + #ifdef __cplusplus }; #endif diff --git a/src/core/common/logging.hpp b/src/core/common/logging.hpp index 107ab16ce..51a8ccbb9 100644 --- a/src/core/common/logging.hpp +++ b/src/core/common/logging.hpp @@ -74,7 +74,7 @@ extern "C" { * */ #if OPENTHREAD_CONFIG_LOG_LEVEL >= OPENTHREAD_LOG_LEVEL_CRIT -#define otLogCrit(aRegion, aFormat, ...) otPlatLog(kLogLevelCrit, aRegion, aFormat OPENTHREAD_CONFIG_LOG_SUFFIX, ## __VA_ARGS__) +#define otLogCrit(aRegion, aFormat, ...) _otLogFormatter(kLogLevelCrit, aRegion, aFormat, ## __VA_ARGS__) #else #define otLogCrit(aRegion, aFormat, ...) #endif @@ -90,7 +90,7 @@ extern "C" { * */ #if OPENTHREAD_CONFIG_LOG_LEVEL >= OPENTHREAD_LOG_LEVEL_WARN -#define otLogWarn(aRegion, aFormat, ...) otPlatLog(kLogLevelWarn, aRegion, aFormat OPENTHREAD_CONFIG_LOG_SUFFIX, ## __VA_ARGS__) +#define otLogWarn(aRegion, aFormat, ...) _otLogFormatter(kLogLevelWarn, aRegion, aFormat, ## __VA_ARGS__) #else #define otLogWarn(aRegion, aFormat, ...) #endif @@ -106,7 +106,7 @@ extern "C" { * */ #if OPENTHREAD_CONFIG_LOG_LEVEL >= OPENTHREAD_LOG_LEVEL_INFO -#define otLogInfo(aRegion, aFormat, ...) otPlatLog(kLogLevelInfo, aRegion, aFormat OPENTHREAD_CONFIG_LOG_SUFFIX, ## __VA_ARGS__) +#define otLogInfo(aRegion, aFormat, ...) _otLogFormatter(kLogLevelInfo, aRegion, aFormat, ## __VA_ARGS__) #else #define otLogInfo(aRegion, aFormat, ...) #endif @@ -122,7 +122,7 @@ extern "C" { * */ #if OPENTHREAD_CONFIG_LOG_LEVEL >= OPENTHREAD_LOG_LEVEL_DEBG -#define otLogDebg(aRegion, aFormat, ...) otPlatLog(kLogLevelDebg, aRegion, aFormat OPENTHREAD_CONFIG_LOG_SUFFIX, ## __VA_ARGS__) +#define otLogDebg(aRegion, aFormat, ...) _otLogFormatter(kLogLevelDebg, aRegion, aFormat, ## __VA_ARGS__) #else #define otLogDebg(aRegion, aFormat, ...) #endif @@ -658,7 +658,7 @@ extern "C" { * */ #if OPENTHREAD_ENABLE_CERT_LOG -#define otLogCertMeshCoP(aFormat, ...) otPlatLog(kLogLevelNone, kLogRegionMeshCoP, aFormat OPENTHREAD_CONFIG_LOG_SUFFIX, ## __VA_ARGS__) +#define otLogCertMeshCoP(aFormat, ...) _otLogFormatter(kLogLevelNone, kLogRegionMeshCoP, aFormat, ## __VA_ARGS__) #else #define otLogCertMeshCoP(aFormat, ...) #endif @@ -1146,6 +1146,44 @@ extern "C" { */ void otDump(otLogLevel aLevel, otLogRegion aRegion, const char *aId, const void *aBuf, const size_t aLength); +#ifdef OPENTHREAD_CONFIG_LOG_PREPEND_REGION +/** + * This method converts the log region value into a string + * + * @param[in] aRegion The log region. + * + * @returns A const char pointer to the C string corresponding to the log region. + * + */ +const char *otLogRegionToString(otLogRegion aRegion); + +/** + * Local/private macro to format the log message + */ +#define _otLogFormatter(aLogLevel, aRegion, aFormat, ...) \ + otPlatLog( \ + aLogLevel, \ + aRegion, \ + "%s: " aFormat OPENTHREAD_CONFIG_LOG_SUFFIX, \ + otLogRegionToString(aRegion), \ + ## __VA_ARGS__ \ + ) + +#else // OPENTHREAD_CONFIG_LOG_PREPEND_REGION + +/** + * Local/private macro to format the log message + */ +#define _otLogFormatter(aLogLevel, aRegion, aFormat, ...) \ + otPlatLog( \ + aLogLevel, \ + aRegion, \ + aFormat OPENTHREAD_CONFIG_LOG_SUFFIX, \ + ## __VA_ARGS__ \ + ) + +#endif // OPENTHREAD_CONFIG_LOG_PREPEND_REGION + #ifdef __cplusplus }; #endif diff --git a/src/core/openthread-core-default-config.h b/src/core/openthread-core-default-config.h index 67224a9f4..272a7ad69 100644 --- a/src/core/openthread-core-default-config.h +++ b/src/core/openthread-core-default-config.h @@ -381,6 +381,14 @@ */ #define OPENTHREAD_CONFIG_LOG_NETDIAG +/** + * @def OPENTHREAD_CONFIG_LOG_PREPREND_REGION + * + * Define to prepend the log region to all log messages + * + */ +#define OPENTHREAD_CONFIG_LOG_PREPEND_REGION + /** * @def OPENTHREAD_CONFIG_LOG_SUFFIX *