libgui 2.01
libgui is a GUI library for the GameCube, Wii, and Wii U
 
Loading...
Searching...
No Matches
Logging

The multi-backend Logger, its LOG_*() macros and every logging backend (console, UDP, USB Gecko/serial, file). More...

Classes

struct  LogConfig
 Full runtime configuration for the Logger. More...
 
class  LoggingDriver
 Abstract backend a Logger fans a formatted line out to. More...
 
class  Logger
 Central fan-out dispatcher. More...
 
class  LoggerFile
 Log backend that appends to a file through the platform's devoptab path. More...
 
class  OgcLoggerSysReport
 Log backend writing to the console debug output via SYS_Report. More...
 
class  OgcLoggerUdp
 Non-blocking UDP log backend. More...
 
class  OgcLoggerUsbGecko
 Log backend for a USB Gecko adapter over EXI, via usbgecko.c. More...
 
class  WutLoggerOSReport
 Log backend writing to the console debug output via OSReport. More...
 
class  WutLoggerUdp
 Non-blocking UDP log backend over nsysnet sockets. More...
 
class  WutLoggerUsbSerial
 Log backend writing to a USB serial adapter (requires the optional usbserial module). More...
 

Enumerations

enum class  LogLevel : uint8_t {
  Debug , Info , Warning , Error ,
  None
}
 Severity of a single log call. More...
 
enum class  LogMode : uint8_t {
  LogMode::OSReport , UDP , SerialGecko , File ,
  LogMode::Multi
}
 Which single backend is active when LogConfig::mode isn't Multi. More...
 
enum  LogBackendId : uint32_t {
  LOGGER_NONE = 0 , LOGGER_OSREPORT = 1u << 0 , LOGGER_UDP = 1u << 1 , LOGGER_SERIAL = 1u << 2 ,
  LOGGER_FILE = 1u << 3
}
 Bitmask identifying an individual backend. More...
 
enum class  LogFlushPolicy : uint8_t { LogFlushPolicy::Immediate , LogFlushPolicy::EveryNWrites , LogFlushPolicy::Never }
 How LoggerFile flushes writes to storage. More...
 

Detailed Description

The multi-backend Logger, its LOG_*() macros and every logging backend (console, UDP, USB Gecko/serial, file).

Enumeration Type Documentation

◆ LogBackendId

enum LogBackendId : uint32_t

Bitmask identifying an individual backend.

Plain (not enum class) so config code can OR them together; extend by appending a new bit, never by renumbering existing ones (multiBackendMask may be persisted/passed around by a caller).

Definition at line 76 of file Logger.h.

◆ LogFlushPolicy

enum class LogFlushPolicy : uint8_t
strong

How LoggerFile flushes writes to storage.

Enumerator
Immediate 

fflush() after every write - safest against a crash/power loss, slowest

EveryNWrites 

fflush() every LogConfig::flushEveryNWrites writes

Never 

rely on the C library / fclose() at shutdown - fastest, least crash-safe

Definition at line 87 of file Logger.h.

◆ LogLevel

enum class LogLevel : uint8_t
strong

Severity of a single log call.

None is only meaningful as a LogConfig::level value ("log nothing"), never passed to a LOG_*() call.

Definition at line 44 of file Logger.h.

◆ LogMode

enum class LogMode : uint8_t
strong

Which single backend is active when LogConfig::mode isn't Multi.

Kept separate from LogBackendId below so the common case - "just point me at one backend" - doesn't require touching a bitmask.

Enumerator
OSReport 

OSReport (Wii U) / SYS_Report (GC+Wii) - always safe, no hardware required.

Multi 

fan out to every backend set in LogConfig::multiBackendMask

Definition at line 62 of file Logger.h.