~aleteoryx/muditaos

9d35def14d88e2579fe6b3c83e122e2d84b61605 — Mateusz Grzegorzek 5 years ago 356114d
[EGD-4477] Dump logs to a file for linux (#1081)

[EGD-4477] Implement dumping logs to a file for linux
M module-sys/SystemManager/SystemManager.cpp => module-sys/SystemManager/SystemManager.cpp +0 -1
@@ 94,7 94,6 @@ namespace sys

    void SystemManager::StartSystem(InitFunction init)
    {
        LOG_FATAL("Initializing system...");

        powerManager = std::make_unique<PowerManager>();
        // Switch system to full functionality(clocks and power domains configured to max values)

M module-utils/board/linux/log.cpp => module-utils/board/linux/log.cpp +13 -1
@@ 6,6 6,8 @@
#include <string>
#include <mutex>
#include <ticks.hpp>
#include <fstream>
#include <string_view>

#define LOGGER_BUFFER_SIZE 4096



@@ 38,6 40,7 @@ struct Logger
{
    Logger(logger_level level = LOGTRACE) : level{level}
    {}

    std::mutex lock;
    logger_level level;
};


@@ 45,6 48,13 @@ struct Logger
static Logger logger;
static char loggerBuffer[LOGGER_BUFFER_SIZE] = {0};

void dumpToFile(std::string_view log, size_t length)
{
    static std::fstream logFile(logFileName, std::fstream::out);
    logFile.write(log.data(), length);
    logFile.flush();
}

void log_Printf(const char *fmt, ...)
{
    /* Acquire lock */


@@ 54,10 64,11 @@ void log_Printf(const char *fmt, ...)
    va_list args;

    va_start(args, fmt);
    vsnprintf(ptr, LOGGER_BUFFER_SIZE - 1, fmt, args);
    ptr += vsnprintf(ptr, LOGGER_BUFFER_SIZE - 1, fmt, args);
    va_end(args);

    std::cout << loggerBuffer;
    dumpToFile(loggerBuffer, ptr - loggerBuffer);
}

static void _log_Log(


@@ 92,6 103,7 @@ static void _log_Log(
    ptr += snprintf(ptr, &loggerBuffer[LOGGER_BUFFER_SIZE] - ptr, "\n");

    std::cout << loggerBuffer;
    dumpToFile(loggerBuffer, ptr - loggerBuffer);
}

__attribute__((weak)) void log_Log(

M module-utils/log/log.hpp => module-utils/log/log.hpp +5 -0
@@ 82,4 82,9 @@ extern "C"
}
#endif

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
static const char *logFileName = "MuditaOS.log";
#pragma GCC diagnostic pop

#endif /* LOG_LOG_H_ */

M source/main.cpp => source/main.cpp +2 -3
@@ 66,9 66,6 @@ int main()

    bsp::BoardInit();

    LOG_PRINTF("Launching PurePhone \n");
    LOG_PRINTF("commit: %s tag: %s branch: %s\n", GIT_REV, GIT_TAG, GIT_BRANCH);

    auto sysmgr = std::make_shared<sys::SystemManager>(5000);

    sysmgr->StartSystem([sysmgr]() {


@@ 159,6 156,8 @@ int main()

        return ret;
    });
    LOG_PRINTF("Launching PurePhone \n");
    LOG_PRINTF("commit: %s tag: %s branch: %s\n", GIT_REV, GIT_TAG, GIT_BRANCH);

    cpp_freertos::Thread::StartScheduler();