aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Lin <simonlin@google.com>2022-04-14 02:50:29 +0800
committerGitHub <noreply@github.com>2022-04-13 11:50:29 -0700
commit8297217e31532be9e6d512c53566c199c0ebd2bc (patch)
tree3d90b17d2f65e615a2c12ffd7a2b89ed40a2da84 /src
parent67ae7f6258e5327c153850e2b8da2cbdf62b09f3 (diff)
downloadot-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.cpp9
-rw-r--r--src/common/logging.hpp5
-rw-r--r--src/ncp/ncp_openthread.cpp83
-rw-r--r--src/ncp/ncp_openthread.hpp4
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;