diff --git a/examples/platforms/simulation/logging.c b/examples/platforms/simulation/logging.c index 8ac767771..e63eb44f5 100644 --- a/examples/platforms/simulation/logging.c +++ b/examples/platforms/simulation/logging.c @@ -90,6 +90,25 @@ void platformLoggingDeinit(void) } } +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE + +void otPlatLogOutput(otInstance *aInstance, otLogLevel aLogLevel, const char *aLogLine) +{ + OT_UNUSED_VARIABLE(aInstance); + OT_UNUSED_VARIABLE(aLogLevel); + + if (sLogFile == NULL) + { + syslog(LOG_CRIT, "[%lu] %s", (unsigned long)gNodeId, aLogLine); + } + else + { + fprintf(sLogFile, "%s\r\n", aLogLine); + } +} + +#else + void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) { OT_UNUSED_VARIABLE(aLogLevel); @@ -118,9 +137,11 @@ void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat va_end(args); } -#else +#endif // OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE + +#else // (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED) void platformLoggingInit(const char *aName) { OT_UNUSED_VARIABLE(aName); } void platformLoggingDeinit(void) {} -#endif // (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED) +#endif diff --git a/examples/platforms/utils/debug_uart.c b/examples/platforms/utils/debug_uart.c index 169c65dde..733df0b4e 100644 --- a/examples/platforms/utils/debug_uart.c +++ b/examples/platforms/utils/debug_uart.c @@ -120,6 +120,15 @@ otError otPlatDebugUart_logfile(const char *filename) } #if (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_DEBUG_UART) + +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +void otPlatLogOutput(otInstance *aInstance, otLogLevel aLogLevel, const char *aLogLine) +{ + OT_UNUSED_VARIABLE(aInstance); + otPlatLog(aLogLevel, OT_LOG_REGION_CORE, "%s", aLogLine); +} +#endif + /* this should not be a WEAK function */ void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) { diff --git a/src/cli/cli_logging.cpp b/src/cli/cli_logging.cpp index b788e454c..2933c7ba8 100644 --- a/src/cli/cli_logging.cpp +++ b/src/cli/cli_logging.cpp @@ -41,6 +41,14 @@ #if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_APP +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +extern "C" void otPlatLogOutput(otInstance *aInstance, otLogLevel aLogLevel, const char *aLogLine) +{ + OT_UNUSED_VARIABLE(aInstance); + otPlatLog(aLogLevel, OT_LOG_REGION_CORE, "%s", aLogLine); +} +#endif + extern "C" OT_TOOL_WEAK void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) { va_list ap; diff --git a/src/ncp/ncp_base.cpp b/src/ncp/ncp_base.cpp index 798b057d0..9274bc2ba 100644 --- a/src/ncp/ncp_base.cpp +++ b/src/ncp/ncp_base.cpp @@ -2847,6 +2847,22 @@ otError otNcpStreamWrite(int aStreamId, const uint8_t *aDataPtr, int aDataLen) #if (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_APP) +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE + +extern "C" void otPlatLogOutput(otInstance *aInstance, otLogLevel aLogLevel, const char *aLogLine) +{ + OT_UNUSED_VARIABLE(aInstance); + + ot::Ncp::NcpBase *ncp = ot::Ncp::NcpBase::GetNcpInstance(); + + if (ncp != nullptr) + { + ncp->Log(aLogLevel, OT_LOG_REGION_CORE, aLogLine); + } +} + +#else + extern "C" void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) { va_list args; @@ -2866,4 +2882,6 @@ extern "C" void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const ch va_end(args); } +#endif // OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE + #endif // (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_APP) diff --git a/src/posix/platform/logging.cpp b/src/posix/platform/logging.cpp index 8dd2a5b67..aac8bd123 100644 --- a/src/posix/platform/logging.cpp +++ b/src/posix/platform/logging.cpp @@ -36,40 +36,53 @@ #include #if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED -OT_TOOL_WEAK void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) -{ - OT_UNUSED_VARIABLE(aLogRegion); - va_list args; +static int ConvertLogLevelToSyslogLevel(otLogLevel aLogLevel) +{ + int level = LOG_DEBUG; switch (aLogLevel) { case OT_LOG_LEVEL_NONE: - aLogLevel = LOG_ALERT; + level = LOG_ALERT; break; case OT_LOG_LEVEL_CRIT: - aLogLevel = LOG_CRIT; + level = LOG_CRIT; break; case OT_LOG_LEVEL_WARN: - aLogLevel = LOG_WARNING; + level = LOG_WARNING; break; case OT_LOG_LEVEL_NOTE: - aLogLevel = LOG_NOTICE; + level = LOG_NOTICE; break; case OT_LOG_LEVEL_INFO: - aLogLevel = LOG_INFO; + level = LOG_INFO; break; case OT_LOG_LEVEL_DEBG: - aLogLevel = LOG_DEBUG; + level = LOG_DEBUG; break; default: assert(false); - aLogLevel = LOG_DEBUG; break; } + return level; +} + +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +OT_TOOL_WEAK void otPlatLogOutput(otInstance *, otLogLevel aLogLevel, const char *aLogLine) +{ + syslog(ConvertLogLevelToSyslogLevel(aLogLevel), "%s", aLogLine); +} +#else +OT_TOOL_WEAK void otPlatLog(otLogLevel aLogLevel, otLogRegion, const char *aFormat, ...) +{ + va_list args; + va_start(args, aFormat); - vsyslog(aLogLevel, aFormat, args); + vsyslog(ConvertLogLevelToSyslogLevel(aLogLevel), aFormat, args); va_end(args); } +#endif + #endif // OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED diff --git a/tests/gtest/fake_platform.cpp b/tests/gtest/fake_platform.cpp index 29a285e82..fe2b6d932 100644 --- a/tests/gtest/fake_platform.cpp +++ b/tests/gtest/fake_platform.cpp @@ -496,6 +496,8 @@ void otPlatDiagRadioReceived(otInstance *, otRadioFrame *, otError) {} void otPlatDiagAlarmCallback(otInstance *) {} +OT_TOOL_WEAK void otPlatLogOutput(otInstance *, otLogLevel, const char *) {} + OT_TOOL_WEAK void otPlatLog(otLogLevel, otLogRegion, const char *, ...) {} void *otPlatCAlloc(size_t aNum, size_t aSize) { return calloc(aNum, aSize); } diff --git a/tests/toranj/openthread-core-toranj-config-simulation.h b/tests/toranj/openthread-core-toranj-config-simulation.h index b85ab97af..7adc71913 100644 --- a/tests/toranj/openthread-core-toranj-config-simulation.h +++ b/tests/toranj/openthread-core-toranj-config-simulation.h @@ -89,6 +89,8 @@ #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED +#define OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE 1 + #define OPENTHREAD_CONFIG_CLI_LOG_INPUT_OUTPUT_ENABLE 1 #define OPENTHREAD_CONFIG_CLI_LOG_INPUT_OUTPUT_LEVEL OT_LOG_LEVEL_INFO diff --git a/tests/unit/test_dhcp6_pd_client.cpp b/tests/unit/test_dhcp6_pd_client.cpp index 8cc76444a..0333e2579 100644 --- a/tests/unit/test_dhcp6_pd_client.cpp +++ b/tests/unit/test_dhcp6_pd_client.cpp @@ -69,11 +69,11 @@ void AdvanceNowTo(uint32_t aNewNow); extern "C" { #if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED -void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +void otPlatLogOutput(otInstance *, otLogLevel, const char *aLogLine) { printf(" %s\n", aLogLine); } +#else +void otPlatLog(otLogLevel, otLogRegion, const char *aFormat, ...) { - OT_UNUSED_VARIABLE(aLogLevel); - OT_UNUSED_VARIABLE(aLogRegion); - va_list args; printf(" "); @@ -83,6 +83,7 @@ void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat printf("\n"); } #endif +#endif //---------------------------------------------------------------------------------------------------------------------- // otPlatAlarams diff --git a/tests/unit/test_dns_client.cpp b/tests/unit/test_dns_client.cpp index 40d211a10..eb5c3e80d 100644 --- a/tests/unit/test_dns_client.cpp +++ b/tests/unit/test_dns_client.cpp @@ -138,11 +138,11 @@ void otPlatFree(void *aPtr) #endif #if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED -void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +void otPlatLogOutput(otInstance *, otLogLevel, const char *aLogLine) { printf(" %s\n", aLogLine); } +#else +void otPlatLog(otLogLevel, otLogRegion, const char *aFormat, ...) { - OT_UNUSED_VARIABLE(aLogLevel); - OT_UNUSED_VARIABLE(aLogRegion); - va_list args; printf(" "); @@ -152,6 +152,7 @@ void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat printf("\n"); } #endif +#endif } // extern "C" diff --git a/tests/unit/test_dnssd_discovery_proxy.cpp b/tests/unit/test_dnssd_discovery_proxy.cpp index d242f447d..eeaa7086f 100644 --- a/tests/unit/test_dnssd_discovery_proxy.cpp +++ b/tests/unit/test_dnssd_discovery_proxy.cpp @@ -139,11 +139,11 @@ void otPlatFree(void *aPtr) #endif #if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED -void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +void otPlatLogOutput(otInstance *, otLogLevel, const char *aLogLine) { printf(" %s\n", aLogLine); } +#else +void otPlatLog(otLogLevel, otLogRegion, const char *aFormat, ...) { - OT_UNUSED_VARIABLE(aLogLevel); - OT_UNUSED_VARIABLE(aLogRegion); - va_list args; printf(" "); @@ -153,6 +153,7 @@ void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat printf("\n"); } #endif +#endif } // extern "C" diff --git a/tests/unit/test_mdns.cpp b/tests/unit/test_mdns.cpp index 64f86183a..1a6a5f51f 100644 --- a/tests/unit/test_mdns.cpp +++ b/tests/unit/test_mdns.cpp @@ -1677,26 +1677,26 @@ static void SendEmtryPtrQueryWithKnownAnswers(const char *aName, const KnownAnsw extern "C" { -#if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED -void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) -{ - OT_UNUSED_VARIABLE(aLogLevel); - OT_UNUSED_VARIABLE(aLogRegion); - OT_UNUSED_VARIABLE(aFormat); - #if ENABLE_TEST_LOG + +#if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +void otPlatLogOutput(otInstance *, otLogLevel, const char *aLogLine) { printf(" %s\n", aLogLine); } +#else +void otPlatLog(otLogLevel, otLogRegion, const char *aFormat, ...) +{ va_list args; printf(" "); va_start(args, aFormat); vprintf(aFormat, args); va_end(args); - printf("\n"); -#endif } - #endif +#endif + +#endif // ENABLE_TEST_LOG //---------------------------------------------------------------------------------------------------------------------- // `otPlatAlarm` diff --git a/tests/unit/test_platform.cpp b/tests/unit/test_platform.cpp index 728a33319..f74cbaf6c 100644 --- a/tests/unit/test_platform.cpp +++ b/tests/unit/test_platform.cpp @@ -280,6 +280,8 @@ OT_TOOL_WEAK otPlatResetReason otPlatGetResetReason(otInstance *) { return OT_PL OT_TOOL_WEAK void otPlatWakeHost(void) {} +OT_TOOL_WEAK void otPlatLogOutput(otInstance *, otLogLevel, const char *) {} + OT_TOOL_WEAK void otPlatLog(otLogLevel, otLogRegion, const char *, ...) {} OT_TOOL_WEAK void otPlatSettingsInit(otInstance *, const uint16_t *, uint16_t) {} diff --git a/tests/unit/test_routing_manager.cpp b/tests/unit/test_routing_manager.cpp index e97a22f92..fb5c476e8 100644 --- a/tests/unit/test_routing_manager.cpp +++ b/tests/unit/test_routing_manager.cpp @@ -242,11 +242,11 @@ void DiscoverNat64Prefix(const Ip6::Prefix &aPrefix); extern "C" { #if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED -void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +void otPlatLogOutput(otInstance *, otLogLevel, const char *aLogLine) { printf(" %s\n", aLogLine); } +#else +void otPlatLog(otLogLevel, otLogRegion, const char *aFormat, ...) { - OT_UNUSED_VARIABLE(aLogLevel); - OT_UNUSED_VARIABLE(aLogRegion); - va_list args; printf(" "); @@ -256,6 +256,7 @@ void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat printf("\n"); } #endif +#endif //---------------------------------------------------------------------------------------------------------------------- // `otPlatRadio diff --git a/tests/unit/test_srp_adv_proxy.cpp b/tests/unit/test_srp_adv_proxy.cpp index 1794a3923..ecb9ce6d3 100644 --- a/tests/unit/test_srp_adv_proxy.cpp +++ b/tests/unit/test_srp_adv_proxy.cpp @@ -458,11 +458,11 @@ void otPlatFree(void *aPtr) #endif #if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED -void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +void otPlatLogOutput(otInstance *, otLogLevel, const char *aLogLine) { printf(" %s\n", aLogLine); } +#else +void otPlatLog(otLogLevel, otLogRegion, const char *aFormat, ...) { - OT_UNUSED_VARIABLE(aLogLevel); - OT_UNUSED_VARIABLE(aLogRegion); - va_list args; printf(" "); @@ -472,6 +472,7 @@ void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat printf("\n"); } #endif +#endif } // extern "C" diff --git a/tests/unit/test_srp_server.cpp b/tests/unit/test_srp_server.cpp index a9a2e916c..ae2dde1d4 100644 --- a/tests/unit/test_srp_server.cpp +++ b/tests/unit/test_srp_server.cpp @@ -134,11 +134,11 @@ void otPlatFree(void *aPtr) #endif #if OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED -void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat, ...) +#if OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE +void otPlatLogOutput(otInstance *, otLogLevel, const char *aLogLine) { printf(" %s\n", aLogLine); } +#else +void otPlatLog(otLogLevel, otLogRegion, const char *aFormat, ...) { - OT_UNUSED_VARIABLE(aLogLevel); - OT_UNUSED_VARIABLE(aLogRegion); - va_list args; printf(" "); @@ -148,6 +148,7 @@ void otPlatLog(otLogLevel aLogLevel, otLogRegion aLogRegion, const char *aFormat printf("\n"); } #endif +#endif } // extern "C"