HF Interface Wrapper 0.1.0-dev
Embedded C++ hardware abstraction layer
Loading...
Searching...
No Matches
StmLogger Class Reference

STM32 Logger — production-quality logging over UART/SWO/printf. More...

#include <StmLogger.h>

Inheritance diagram for StmLogger:
[legend]
Collaboration diagram for StmLogger:
[legend]

Public Types

enum class  Backend : hf_u8_t { UART_HAL = 0 , SWO_ITM = 1 , PRINTF = 2 }
 Output backend selection. More...
 

Public Member Functions

 StmLogger (UART_HandleTypeDef *uart_handle=nullptr, Backend backend=Backend::UART_HAL) noexcept
 Construct with UART backend (most common)
 
 ~StmLogger () noexcept override
 
hf_logger_err_t Initialize (const hf_logger_config_t &config) noexcept override
 Initialize the logger.
 
hf_logger_err_t Deinitialize () noexcept override
 Deinitialize the logger.
 
bool IsInitialized () const noexcept override
 Check if logger is initialized.
 
bool EnsureInitialized () noexcept override
 Ensure logger is initialized (lazy initialization)
 
hf_logger_err_t SetLogLevel (const char *tag, hf_log_level_t level) noexcept override
 Set log level for a specific tag.
 
hf_logger_err_t GetLogLevel (const char *tag, hf_log_level_t &level) const noexcept override
 Get log level for a specific tag.
 
hf_logger_err_t Error (const char *tag, const char *format,...) noexcept override
 Log a message at ERROR level.
 
hf_logger_err_t Warn (const char *tag, const char *format,...) noexcept override
 Log a message at WARN level.
 
hf_logger_err_t Info (const char *tag, const char *format,...) noexcept override
 Log a message at INFO level.
 
hf_logger_err_t Debug (const char *tag, const char *format,...) noexcept override
 Log a message at DEBUG level.
 
hf_logger_err_t Verbose (const char *tag, const char *format,...) noexcept override
 Log a message at VERBOSE level.
 
hf_logger_err_t Log (hf_log_level_t level, const char *tag, const char *format,...) noexcept override
 Log a message at specified level.
 
hf_logger_err_t LogV (hf_log_level_t level, const char *tag, const char *format, va_list args) noexcept override
 Log a message with va_list (for internal use)
 
hf_logger_err_t LogWithLocation (hf_log_level_t level, const char *tag, const char *file, hf_u32_t line, const char *function, const char *format,...) noexcept override
 Log a message with file and line information.
 
hf_logger_err_t Flush () noexcept override
 Flush any buffered output.
 
bool IsLevelEnabled (hf_log_level_t level, const char *tag=nullptr) const noexcept override
 Check if a log level is enabled for a tag.
 
hf_logger_err_t GetStatistics (hf_logger_statistics_t &statistics) const noexcept override
 Get logger statistics.
 
hf_logger_err_t GetDiagnostics (hf_logger_diagnostics_t &diagnostics) const noexcept override
 Get logger diagnostics.
 
hf_logger_err_t ResetStatistics () noexcept override
 Reset statistics.
 
hf_logger_err_t ResetDiagnostics () noexcept override
 Reset diagnostics.
 
bool IsHealthy () const noexcept override
 Check if logger is healthy.
 
hf_logger_err_t GetLastError () const noexcept override
 Get last error code.
 
hf_logger_err_t GetLastErrorMessage (char *message, hf_u32_t max_length) const noexcept override
 Get last error message.
 
hf_logger_err_t PrintStatistics (const char *tag=nullptr, bool detailed=true) const noexcept override
 Print statistics to log output.
 
hf_logger_err_t PrintDiagnostics (const char *tag=nullptr, bool detailed=true) const noexcept override
 Print diagnostics to log output.
 
hf_logger_err_t PrintStatus (const char *tag=nullptr, bool detailed=true) const noexcept override
 Print both statistics and diagnostics.
 
- Public Member Functions inherited from BaseLogger
virtual ~BaseLogger () noexcept=default
 Virtual destructor.
 

Private Member Functions

void OutputString (const char *str, hf_u32_t length) noexcept
 Write formatted string to output backend.
 
hf_logger_err_t FormatAndOutput (hf_log_level_t level, const char *tag, const char *format, va_list args) noexcept
 Format and output a log message.
 

Private Attributes

Backend backend_
 Output backend.
 
UART_HandleTypeDef * uart_handle_
 UART HAL handle (for UART backend)
 
bool initialized_
 Init state.
 
hf_log_level_t global_level_
 Current global log level.
 
hf_logger_statistics_t statistics_
 Statistics.
 
hf_logger_diagnostics_t diagnostics_
 Diagnostics.
 
hf_logger_err_t last_error_
 Last error code.
 
char format_buffer_ [256]
 Formatting scratch buffer.
 

Additional Inherited Members

- Protected Member Functions inherited from BaseLogger
 BaseLogger ()=default
 Default constructor.
 
 BaseLogger (const BaseLogger &)=delete
 Copy constructor (deleted)
 
BaseLoggeroperator= (const BaseLogger &)=delete
 Assignment operator (deleted)
 
 BaseLogger (BaseLogger &&)=delete
 Move constructor (deleted)
 
BaseLoggeroperator= (BaseLogger &&)=delete
 Move assignment operator (deleted)
 

Detailed Description

STM32 Logger — production-quality logging over UART/SWO/printf.

Member Enumeration Documentation

◆ Backend

enum class StmLogger::Backend : hf_u8_t
strong

Output backend selection.

Enumerator
UART_HAL 

Use HAL_UART_Transmit.

SWO_ITM 

Use ITM_SendChar (SWO trace)

PRINTF 

Use printf / _write.

Constructor & Destructor Documentation

◆ StmLogger()

StmLogger::StmLogger ( UART_HandleTypeDef * uart_handle = nullptr,
Backend backend = Backend::UART_HAL )
explicitnoexcept

Construct with UART backend (most common)

◆ ~StmLogger()

StmLogger::~StmLogger ( )
overridenoexcept

Member Function Documentation

◆ Debug()

hf_logger_err_t StmLogger::Debug ( const char * tag,
const char * format,
... )
overridevirtualnoexcept

Log a message at DEBUG level.

Parameters
tagLog tag
formatprintf-style format string
...printf-style arguments
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ Deinitialize()

hf_logger_err_t StmLogger::Deinitialize ( )
overridevirtualnoexcept

Deinitialize the logger.

Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ EnsureInitialized()

bool StmLogger::EnsureInitialized ( )
overridevirtualnoexcept

Ensure logger is initialized (lazy initialization)

Returns
true if initialization successful, false otherwise

Implements BaseLogger.

◆ Error()

hf_logger_err_t StmLogger::Error ( const char * tag,
const char * format,
... )
overridevirtualnoexcept

Log a message at ERROR level.

Parameters
tagLog tag
formatprintf-style format string
...printf-style arguments
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ Flush()

hf_logger_err_t StmLogger::Flush ( )
overridevirtualnoexcept

Flush any buffered output.

Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ FormatAndOutput()

hf_logger_err_t StmLogger::FormatAndOutput ( hf_log_level_t level,
const char * tag,
const char * format,
va_list args )
privatenoexcept

Format and output a log message.

◆ GetDiagnostics()

hf_logger_err_t StmLogger::GetDiagnostics ( hf_logger_diagnostics_t & diagnostics) const
overridevirtualnoexcept

Get logger diagnostics.

Parameters
diagnosticsOutput diagnostics structure
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ GetLastError()

hf_logger_err_t StmLogger::GetLastError ( ) const
overridevirtualnoexcept

Get last error code.

Returns
hf_logger_err_t Last error code

Implements BaseLogger.

◆ GetLastErrorMessage()

hf_logger_err_t StmLogger::GetLastErrorMessage ( char * message,
hf_u32_t max_length ) const
overridevirtualnoexcept

Get last error message.

Parameters
messageOutput error message buffer
max_lengthMaximum message length
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ GetLogLevel()

hf_logger_err_t StmLogger::GetLogLevel ( const char * tag,
hf_log_level_t & level ) const
overridevirtualnoexcept

Get log level for a specific tag.

Parameters
tagLog tag (nullptr for default)
levelOutput log level
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ GetStatistics()

hf_logger_err_t StmLogger::GetStatistics ( hf_logger_statistics_t & statistics) const
overridevirtualnoexcept

Get logger statistics.

Parameters
statisticsOutput statistics structure
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ Info()

hf_logger_err_t StmLogger::Info ( const char * tag,
const char * format,
... )
overridevirtualnoexcept

Log a message at INFO level.

Parameters
tagLog tag
formatprintf-style format string
...printf-style arguments
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ Initialize()

hf_logger_err_t StmLogger::Initialize ( const hf_logger_config_t & config)
overridevirtualnoexcept

Initialize the logger.

Parameters
configLogger configuration
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ IsHealthy()

bool StmLogger::IsHealthy ( ) const
overridevirtualnoexcept

Check if logger is healthy.

Returns
true if healthy, false otherwise

Implements BaseLogger.

◆ IsInitialized()

bool StmLogger::IsInitialized ( ) const
overridevirtualnoexcept

Check if logger is initialized.

Returns
true if initialized, false otherwise

Implements BaseLogger.

◆ IsLevelEnabled()

bool StmLogger::IsLevelEnabled ( hf_log_level_t level,
const char * tag = nullptr ) const
overridevirtualnoexcept

Check if a log level is enabled for a tag.

Parameters
levelLog level to check
tagLog tag (nullptr for default)
Returns
true if level is enabled, false otherwise

Implements BaseLogger.

◆ Log()

hf_logger_err_t StmLogger::Log ( hf_log_level_t level,
const char * tag,
const char * format,
... )
overridevirtualnoexcept

Log a message at specified level.

Parameters
levelLog level
tagLog tag
formatprintf-style format string
...printf-style arguments
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ LogV()

hf_logger_err_t StmLogger::LogV ( hf_log_level_t level,
const char * tag,
const char * format,
va_list args )
overridevirtualnoexcept

Log a message with va_list (for internal use)

Parameters
levelLog level
tagLog tag
formatprintf-style format string
argsva_list of arguments
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ LogWithLocation()

hf_logger_err_t StmLogger::LogWithLocation ( hf_log_level_t level,
const char * tag,
const char * file,
hf_u32_t line,
const char * function,
const char * format,
... )
overridevirtualnoexcept

Log a message with file and line information.

Parameters
levelLog level
tagLog tag
fileSource file
lineSource line
functionFunction name
formatprintf-style format string
...printf-style arguments
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ OutputString()

void StmLogger::OutputString ( const char * str,
hf_u32_t length )
privatenoexcept

Write formatted string to output backend.

◆ PrintDiagnostics()

hf_logger_err_t StmLogger::PrintDiagnostics ( const char * tag = nullptr,
bool detailed = true ) const
overridevirtualnoexcept

Print diagnostics to log output.

Parameters
tagLog tag for the output (optional, uses implementation-specific default if nullptr)
detailedIf true, prints detailed diagnostic information
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ PrintStatistics()

hf_logger_err_t StmLogger::PrintStatistics ( const char * tag = nullptr,
bool detailed = true ) const
overridevirtualnoexcept

Print statistics to log output.

Parameters
tagLog tag for the output (optional, uses implementation-specific default if nullptr)
detailedIf true, prints detailed per-level statistics
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ PrintStatus()

hf_logger_err_t StmLogger::PrintStatus ( const char * tag = nullptr,
bool detailed = true ) const
overridevirtualnoexcept

Print both statistics and diagnostics.

Parameters
tagLog tag for the output (optional, uses implementation-specific default if nullptr)
detailedIf true, prints detailed information
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ ResetDiagnostics()

hf_logger_err_t StmLogger::ResetDiagnostics ( )
overridevirtualnoexcept

Reset diagnostics.

Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ ResetStatistics()

hf_logger_err_t StmLogger::ResetStatistics ( )
overridevirtualnoexcept

Reset statistics.

Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ SetLogLevel()

hf_logger_err_t StmLogger::SetLogLevel ( const char * tag,
hf_log_level_t level )
overridevirtualnoexcept

Set log level for a specific tag.

Parameters
tagLog tag (nullptr for default)
levelLog level
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ Verbose()

hf_logger_err_t StmLogger::Verbose ( const char * tag,
const char * format,
... )
overridevirtualnoexcept

Log a message at VERBOSE level.

Parameters
tagLog tag
formatprintf-style format string
...printf-style arguments
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

◆ Warn()

hf_logger_err_t StmLogger::Warn ( const char * tag,
const char * format,
... )
overridevirtualnoexcept

Log a message at WARN level.

Parameters
tagLog tag
formatprintf-style format string
...printf-style arguments
Returns
hf_logger_err_t Success or error code

Implements BaseLogger.

Member Data Documentation

◆ backend_

Backend StmLogger::backend_
private

Output backend.

◆ diagnostics_

hf_logger_diagnostics_t StmLogger::diagnostics_
private

Diagnostics.

◆ format_buffer_

char StmLogger::format_buffer_[256]
private

Formatting scratch buffer.

◆ global_level_

hf_log_level_t StmLogger::global_level_
private

Current global log level.

◆ initialized_

bool StmLogger::initialized_
private

Init state.

◆ last_error_

hf_logger_err_t StmLogger::last_error_
private

Last error code.

◆ statistics_

hf_logger_statistics_t StmLogger::statistics_
private

Statistics.

◆ uart_handle_

UART_HandleTypeDef* StmLogger::uart_handle_
private

UART HAL handle (for UART backend)


The documentation for this class was generated from the following files: