From 3e57a07b43561d3a787eebc46c17d685a3a66d73 Mon Sep 17 00:00:00 2001 From: Adam Dobrowolski Date: Fri, 3 Sep 2021 16:04:25 +0200 Subject: [PATCH] [EGD-7495] Fixed log use on Linux to be the same as on Rt1051 - Log headers were incomplete - Log filtering was broken on linux --- module-os/board/linux/port.c | 6 ++++ module-os/board/linux/portmacro.h | 2 ++ module-utils/board/linux/log_linux.cpp | 24 --------------- module-utils/board/rt1051/log_rt1051.cpp | 37 ------------------------ module-utils/log/Logger.cpp | 36 +++++++++++++++++++++++ module-utils/log/Logger.hpp | 2 ++ 6 files changed, 46 insertions(+), 61 deletions(-) diff --git a/module-os/board/linux/port.c b/module-os/board/linux/port.c index c263e9d613f54fdeaccd12fab0f34cfa2aba080f..ec2177e3db991c26ddbc8ab208ded66e2c635e60 100644 --- a/module-os/board/linux/port.c +++ b/module-os/board/linux/port.c @@ -915,3 +915,9 @@ unsigned long ulPortGetTimerValue( void ) */ return ( unsigned long ) xTimes.tms_utime; } + + +BaseType_t xPortIsInsideInterrupt(void) +{ + return pdFALSE; +} diff --git a/module-os/board/linux/portmacro.h b/module-os/board/linux/portmacro.h index 3234aeeed551a4cb069a6fc5219b710de519d8e5..637fedc56d2e69d810cbca0b6e886b58129e767a 100644 --- a/module-os/board/linux/portmacro.h +++ b/module-os/board/linux/portmacro.h @@ -180,6 +180,8 @@ extern void vPortAddTaskHandle( void *pxTaskHandle ); #define SIG_TICK SIGPROF #define TIMER_TYPE ITIMER_PROF */ +BaseType_t xPortIsInsideInterrupt(void); + #ifdef __cplusplus } #endif diff --git a/module-utils/board/linux/log_linux.cpp b/module-utils/board/linux/log_linux.cpp index 6808506b69ad051c78bd2ca6f502f197b36d515f..c9edf6b9267177538214219de51f8738ee5b8006 100644 --- a/module-utils/board/linux/log_linux.cpp +++ b/module-utils/board/linux/log_linux.cpp @@ -9,30 +9,6 @@ namespace Log { - void Logger::addLogHeader(logger_level level, const char *file, int line, const char *function) - { - loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos], - LOGGER_BUFFER_SIZE - loggerBufferCurrentPos, - "%d ms ", - cpp_freertos::Ticks::TicksToMs(cpp_freertos::Ticks::GetTicks())); - - loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos], - LOGGER_BUFFER_SIZE - loggerBufferCurrentPos, - "%s%-5s %s%s:%s:%d:%s ", - logColors->levelColors[level].data(), - levelNames[level], - logColors->callerInfoColor.data(), - file, - function, - line, - logColors->resetColor.data()); - } - - bool Logger::filterLogs(logger_level _level) - { - return _level >= level; - } - void Logger::logToDevice(const char *, va_list) { assert(false && "Not implemented"); diff --git a/module-utils/board/rt1051/log_rt1051.cpp b/module-utils/board/rt1051/log_rt1051.cpp index fdc88396f0495740a0bd6ea10fbdb6473e88b1ae..050fd2cfcc14bbf1f1bbe34a3f5ed79077d436a2 100644 --- a/module-utils/board/rt1051/log_rt1051.cpp +++ b/module-utils/board/rt1051/log_rt1051.cpp @@ -9,45 +9,8 @@ #include #include -/// get string description: -/// - in critical seciton - return CRIT -/// - in interrupt return - IRQ -/// - else return thread name -static inline const char *getTaskDesc() -{ - return xTaskGetCurrentTaskHandle() == nullptr - ? Log::Logger::CRIT_STR - : xPortIsInsideInterrupt() ? Log::Logger::IRQ_STR : pcTaskGetName(xTaskGetCurrentTaskHandle()); -} - namespace Log { - void Logger::addLogHeader(logger_level level, const char *file, int line, const char *function) - { - loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos], - loggerBufferSizeLeft(), - "%lu ms ", - cpp_freertos::Ticks::TicksToMs(cpp_freertos::Ticks::GetTicks())); - - loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos], - loggerBufferSizeLeft(), - "%s%-5s %s[%s] %s%s:%s:%d:%s ", - logColors->levelColors[level].data(), - levelNames[level], - logColors->serviceNameColor.data(), - getTaskDesc(), - logColors->callerInfoColor.data(), - file, - function, - line, - logColors->resetColor.data()); - } - - bool Logger::filterLogs(logger_level level) - { - return getLogLevel(getTaskDesc()) <= level; - } - void Logger::logToDevice(const char *fmt, va_list args) { loggerBufferCurrentPos = 0; diff --git a/module-utils/log/Logger.cpp b/module-utils/log/Logger.cpp index f5bb7c1d1b4d39a3d41bd7b2991857f49ccd727b..cdfd9a5fac73acf4ca5777f1a96de0df26c7445e 100644 --- a/module-utils/log/Logger.cpp +++ b/module-utils/log/Logger.cpp @@ -7,6 +7,8 @@ #include "LockGuard.hpp" #include #include +#include +#include #include "macros.h" namespace Log @@ -213,4 +215,38 @@ namespace Log { file << application; } + + const char *getTaskDesc() + { + return xTaskGetCurrentTaskHandle() == nullptr ? Log::Logger::CRIT_STR + : xPortIsInsideInterrupt() ? Log::Logger::IRQ_STR + : pcTaskGetName(xTaskGetCurrentTaskHandle()); + } + + bool Logger::filterLogs(logger_level level) + { + return getLogLevel(getTaskDesc()) <= level; + } + + void Logger::addLogHeader(logger_level level, const char *file, int line, const char *function) + { + loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos], + LOGGER_BUFFER_SIZE - loggerBufferCurrentPos, + "%" PRIu32 " ms ", + cpp_freertos::Ticks::TicksToMs(cpp_freertos::Ticks::GetTicks())); + + loggerBufferCurrentPos += snprintf(&loggerBuffer[loggerBufferCurrentPos], + LOGGER_BUFFER_SIZE - loggerBufferCurrentPos, + "%s%-5s %s[%s] %s%s:%s:%d:%s ", + logColors->levelColors[level].data(), + levelNames[level], + logColors->serviceNameColor.data(), + getTaskDesc(), + logColors->callerInfoColor.data(), + file, + function, + line, + logColors->resetColor.data()); + } + } // namespace Log diff --git a/module-utils/log/Logger.hpp b/module-utils/log/Logger.hpp index f0725410e8e8b4d83e0b2146127c0e760492149c..c858782be49b005c97877e334c46e4a0d26a5330 100644 --- a/module-utils/log/Logger.hpp +++ b/module-utils/log/Logger.hpp @@ -94,4 +94,6 @@ namespace Log static const char *levelNames[]; static std::map filtered; }; + + const char *getTaskDesc(); } // namespace Log