[logging] support uptime prepending in multi-instance builds (#12761)

This commit adds support for `OPENTHREAD_CONFIG_LOG_PREPEND_UPTIME` in
multi-instance builds.

When `OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE` is enabled, the uptime
is retrieved from the currently active `Instance` using
`Instance::GetActiveInstance()`. This requires
`OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE` to be enabled so that
the `Logger` can identify the instance and access its `UptimeTracker`.

A compile-time check is added to ensure that
`OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE` is set when
`OPENTHREAD_CONFIG_LOG_PREPEND_UPTIME` is used in a multi-instance
build.
This commit is contained in:
Abtin Keshavarzian
2026-03-25 21:20:55 -05:00
committed by GitHub
parent 240acdffaa
commit b5e2393c7d
+14 -7
View File
@@ -56,10 +56,6 @@
#error "OPENTHREAD_CONFIG_LOG_PREPEND_UPTIME requires OPENTHREAD_CONFIG_UPTIME_ENABLE"
#endif
#if OPENTHREAD_CONFIG_LOG_PREPEND_UPTIME && OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
#error "OPENTHREAD_CONFIG_LOG_PREPEND_UPTIME is not supported under OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE"
#endif
namespace ot {
#if OT_SHOULD_LOG
@@ -126,9 +122,20 @@ void Logger::Log(const char *aModuleName, LogLevel aLogLevel, Error aError, cons
static_assert(sizeof(kModuleNamePadding) == kMaxLogModuleNameLength + 1, "Padding string is not correct");
#if OPENTHREAD_CONFIG_LOG_PREPEND_UPTIME
ot::UptimeToString(ot::Instance::Get().Get<ot::UptimeTracker>().GetUptime(), logString,
/* aInlcudeMsec */ true);
logString.Append(" ");
{
Instance *instance;
#if !OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
instance = &ot::Instance::Get();
#elif OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE
instance = Instance::GetActiveInstance();
VerifyOrExit(instance != nullptr);
#else
#error "OPENTHREAD_CONFIG_LOG_PREPEND_UPTIME requires LOG_INSTANCE_AWARE_API_ENABLE under multi-instance"
#endif
ot::UptimeToString(instance->Get<ot::UptimeTracker>().GetUptime(), logString, /* aInlcudeMsec */ true);
logString.Append(" ");
}
#endif
#if OPENTHREAD_CONFIG_LOG_LEVEL_DYNAMIC_ENABLE