diff options
author | Simon Lin <simonlin@google.com> | 2022-04-14 02:50:29 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-13 11:50:29 -0700 |
commit | 8297217e31532be9e6d512c53566c199c0ebd2bc (patch) | |
tree | 3d90b17d2f65e615a2c12ffd7a2b89ed40a2da84 /src | |
parent | 67ae7f6258e5327c153850e2b8da2cbdf62b09f3 (diff) | |
download | ot-br-posix-8297217e31532be9e6d512c53566c199c0ebd2bc.tar.gz |
[logging] set OTBR log level when OT log level changes (#1319)
Updates OTBR log level when OT log level changes (e.g. by `log level`
command).
Diffstat (limited to 'src')
-rw-r--r-- | src/common/logging.cpp | 9 | ||||
-rw-r--r-- | src/common/logging.hpp | 5 | ||||
-rw-r--r-- | src/ncp/ncp_openthread.cpp | 83 | ||||
-rw-r--r-- | src/ncp/ncp_openthread.hpp | 4 |
4 files changed, 68 insertions, 33 deletions
diff --git a/src/common/logging.cpp b/src/common/logging.cpp index d9417659..cde74339 100644 --- a/src/common/logging.cpp +++ b/src/common/logging.cpp @@ -60,6 +60,15 @@ otbrLogLevel otbrLogGetLevel(void) return sLevel; } +/** + * Set current log level. + */ +void otbrLogSetLevel(otbrLogLevel aLevel) +{ + assert(aLevel >= OTBR_LOG_EMERG && aLevel <= OTBR_LOG_DEBUG); + sLevel = aLevel; +} + /** Initialize logging */ void otbrLogInit(const char *aIdent, otbrLogLevel aLevel, bool aPrintStderr) { diff --git a/src/common/logging.hpp b/src/common/logging.hpp index e90ba26a..0e4a50e8 100644 --- a/src/common/logging.hpp +++ b/src/common/logging.hpp @@ -66,6 +66,11 @@ typedef enum otbrLogLevel otbrLogGetLevel(void); /** + * Set current log level. + */ +void otbrLogSetLevel(otbrLogLevel aLevel); + +/** * Control log to syslog. * * @param[in] enable True to log to/via syslog. diff --git a/src/ncp/ncp_openthread.cpp b/src/ncp/ncp_openthread.cpp index 8d37e75e..9fb4cdd6 100644 --- a/src/ncp/ncp_openthread.cpp +++ b/src/ncp/ncp_openthread.cpp @@ -87,12 +87,41 @@ ControllerOpenThread::~ControllerOpenThread(void) assert(mInstance == nullptr); } -void ControllerOpenThread::Init(void) +otbrLogLevel ControllerOpenThread::ConvertToOtbrLogLevel(otLogLevel aLogLevel) { - otbrError error = OTBR_ERROR_NONE; - otLogLevel level = OT_LOG_LEVEL_NONE; + otbrLogLevel otbrLogLevel; - switch (otbrLogGetLevel()) + switch (aLogLevel) + { + case OT_LOG_LEVEL_NONE: + otbrLogLevel = OTBR_LOG_EMERG; + break; + case OT_LOG_LEVEL_CRIT: + otbrLogLevel = OTBR_LOG_CRIT; + break; + case OT_LOG_LEVEL_WARN: + otbrLogLevel = OTBR_LOG_WARNING; + break; + case OT_LOG_LEVEL_NOTE: + otbrLogLevel = OTBR_LOG_NOTICE; + break; + case OT_LOG_LEVEL_INFO: + otbrLogLevel = OTBR_LOG_INFO; + break; + case OT_LOG_LEVEL_DEBG: + default: + otbrLogLevel = OTBR_LOG_DEBUG; + break; + } + + return otbrLogLevel; +} + +otLogLevel ControllerOpenThread::ConvertToOtLogLevel(otbrLogLevel aLevel) +{ + otLogLevel level; + + switch (aLevel) { case OTBR_LOG_EMERG: case OTBR_LOG_ALERT: @@ -110,12 +139,19 @@ void ControllerOpenThread::Init(void) level = OT_LOG_LEVEL_INFO; break; case OTBR_LOG_DEBUG: - level = OT_LOG_LEVEL_DEBG; - break; default: - ExitNow(error = OTBR_ERROR_OPENTHREAD); + level = OT_LOG_LEVEL_DEBG; break; } + + return level; +} + +void ControllerOpenThread::Init(void) +{ + otbrError error = OTBR_ERROR_NONE; + otLogLevel level = ConvertToOtLogLevel(otbrLogGetLevel()); + VerifyOrExit(otLoggingSetLevel(level) == OT_ERROR_NONE, error = OTBR_ERROR_OPENTHREAD); mInstance = otSysInit(&mConfig); @@ -272,32 +308,7 @@ extern "C" void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const ch { OT_UNUSED_VARIABLE(aLogRegion); - otbrLogLevel otbrLogLevel; - - switch (aLogLevel) - { - case OT_LOG_LEVEL_NONE: - otbrLogLevel = OTBR_LOG_EMERG; - break; - case OT_LOG_LEVEL_CRIT: - otbrLogLevel = OTBR_LOG_CRIT; - break; - case OT_LOG_LEVEL_WARN: - otbrLogLevel = OTBR_LOG_WARNING; - break; - case OT_LOG_LEVEL_NOTE: - otbrLogLevel = OTBR_LOG_NOTICE; - break; - case OT_LOG_LEVEL_INFO: - otbrLogLevel = OTBR_LOG_INFO; - break; - case OT_LOG_LEVEL_DEBG: - otbrLogLevel = OTBR_LOG_DEBUG; - break; - default: - otbrLogLevel = OTBR_LOG_DEBUG; - break; - } + otbrLogLevel otbrLogLevel = ControllerOpenThread::ConvertToOtbrLogLevel(aLogLevel); va_list ap; va_start(ap, aFormat); @@ -305,5 +316,11 @@ extern "C" void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const ch va_end(ap); } +extern "C" void otPlatLogHandleLevelChanged(otLogLevel aLogLevel) +{ + otbrLogSetLevel(ControllerOpenThread::ConvertToOtbrLogLevel(aLogLevel)); + otbrLogInfo("OpenThread log level changed to %d", aLogLevel); +} + } // namespace Ncp } // namespace otbr diff --git a/src/ncp/ncp_openthread.hpp b/src/ncp/ncp_openthread.hpp index b79e07ca..5b9f712e 100644 --- a/src/ncp/ncp_openthread.hpp +++ b/src/ncp/ncp_openthread.hpp @@ -161,6 +161,8 @@ public: */ const char *GetInterfaceName(void) const { return mConfig.mInterfaceName; } + static otbrLogLevel ConvertToOtbrLogLevel(otLogLevel aLogLevel); + ~ControllerOpenThread(void) override; private: @@ -187,6 +189,8 @@ private: static void DisableAutoAttach(void); + static otLogLevel ConvertToOtLogLevel(otbrLogLevel aLevel); + otInstance *mInstance; otPlatformConfig mConfig; |