Kaspersky IoT Secure Gateway 1000 SDK

Класс LogIface

23 января 2025

ID 244683

Класс LogIface содержит методы, позволяющие поэтапно получить текст записи журнала из частей, и затем отправить запись в журнал одним вызовом:

  • Для установки уровня журналирования отправляемых сообщений используется метод SetLogLevel().
  • Для добавления текста к сообщению используется метод Push().
  • Для отправки составленного одним или несколькими вызовами метода Push() сообщения в журнал используется метод Flush().

    При вызове деструктора ~LogIface() в журнал также отправляется составленное вызовами Push() сообщение, если оно не было ранее отправлено с помощью Flush().

  • Для немедленной отправки отдельного сообщения (без использования составленного вызовами Push() текста) используется метод Log().

Чтобы создать экземпляр класса LogIface, передайте один из перечислителей LogLevel в конструктор класса. Пример использования функций класса LogIface представлен в подразделе "Объединение сообщений" раздела "Дополнительные возможности при отправке сообщений в журнал".

Описание класса LogIface представлено в файле /opt/KasperskyOS-SDK-KISG-Platform-<version>/sysroot-*-kos/component/logrr/cpp/tools.h.

component/logrr/cpp/tools.h (фрагмент)

/**

* @brief C++ frontend interface for logrr for simple printing and queuing logs

* */

class LogIface

{

// ...

public:

LogIface(logrr::LogLevel level, sl::source_location loc = sl::source_location::current()) : m_level(level), m_defaultSourceLocation(loc)

{}

void SetLogLevel(logrr::LogLevel new_level)

{

m_level = new_level;

}

/**

* @brief Append new format with args to current message template

* */

template <typename... Args>

void Push(std::string_view frmt, Args&&... args)

{

AppendFormat(m_message, frmt, std::forward<Args>(args)...);

}

/**

* @brief Log instantly through separate Log command

* */

template <typename... Args>

void Log(FormatWithLocation frmt, Args&&... args)

{

Flush_(frmt.loc, frmt.frmt, std::forward<Args>(args)...);

}

/**

* @brief Flush current message, built with Push, to Log

* */

void Flush(const sl::source_location& loc = sl::source_location::current())

{

Flush_(loc, m_message);

m_message.clear();

}

~LogIface()

{

if (!m_message.empty())

{

Flush_(m_defaultSourceLocation, m_message);

}

}

// ...

};

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!