CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
log.h File Reference

Core logging system API. More...

#include <cx/cx.h>
#include <cx/string/strbase.h>
#include <cx/stype/stvar.h>
#include <cx/thread/atomic.h>

Go to the source code of this file.

Data Structures

struct  LogChannel
 
struct  LogSite
 
struct  LogRecord
 

Macros

#define LOG_Broadcast   0x00000001
 
#define LOG_Restricted   0x00000002
 
#define LOG_Declared   0x00000004
 
#define logStr(level, str)   _logStr_##level(LOG_##level, LOG_CHANNEL, LOG_SiteAlways, 0, str)
 
#define logStrC(level, chan, str)   _logStr_##level(LOG_##level, chan, LOG_SiteAlways, 0, str)
 
#define logFmt(level, fmt, ...)   _logFmtArgs(level, LOG_CHANNEL, LOG_SiteAlways, 0, fmt, __VA_ARGS__)
 
#define logFmtC(level, chan, fmt, ...)   _logFmtArgs(level, chan, LOG_SiteAlways, 0, fmt, __VA_ARGS__)
 
#define logStrOnce(level, str)   _logStr_##level(LOG_##level, LOG_CHANNEL, LOG_SiteOnce, 0, str)
 
#define logStrEveryN(level, n, str)    _logStr_##level(LOG_##level, LOG_CHANNEL, LOG_SiteEveryN, (n), str)
 
#define logStrEveryT(level, interval, str)    _logStr_##level(LOG_##level, LOG_CHANNEL, LOG_SiteEveryT, (interval), str)
 
#define logFmtOnce(level, fmt, ...)    _logFmtArgs(level, LOG_CHANNEL, LOG_SiteOnce, 0, fmt, __VA_ARGS__)
 
#define logFmtEveryN(level, n, fmt, ...)    _logFmtArgs(level, LOG_CHANNEL, LOG_SiteEveryN, (n), fmt, __VA_ARGS__)
 
#define logFmtEveryT(level, interval, fmt, ...)    _logFmtArgs(level, LOG_CHANNEL, LOG_SiteEveryT, (interval), fmt, __VA_ARGS__)
 

Typedefs

typedef struct LogChannel LogChannel
 
typedef struct LogDest LogDest
 Opaque handle to a registered log destination.
 
typedef struct LogSite LogSite
 
typedef struct LogCtx LogCtx
 Opaque handle to a log context; see logctx.h.
 
typedef struct LogRecord LogRecord
 
typedef void(* LogDestMsg) (const LogRecord *rec, void *userdata)
 
typedef void(* LogDestBatchDone) (uint32 batchid, void *userdata)
 
typedef void(* LogDestClose) (void *userdata)
 
typedef bool(* LogChanEnumCB) (LogChannel *chan, void *ctx)
 

Enumerations

enum  LOG_LEVEL_ENUM {
  LOG_Fatal , LOG_Error , LOG_Warn , LOG_Notice ,
  LOG_Info , LOG_Verbose , LOG_Diag , LOG_Debug ,
  LOG_Trace , LOG_Count
}
 
enum  LOG_SITE_GATE { LOG_SiteAlways = 0 , LOG_SiteOnce , LOG_SiteEveryN , LOG_SiteEveryT }
 

Functions

LogChannellogChan (strref path)
 
LogChannellogDeclareChan (strref path, flags_t flags)
 
void logRecordRender (string *out, const LogRecord *rec)
 
LogDest * logRegisterDest (int maxlevel, strref chanfilter, LogDestMsg msgfunc, LogDestBatchDone batchfunc, LogDestClose closefunc, void *userdata)
 
bool logDestAddFilter (LogDest *dhandle, strref pattern, bool exclude)
 
bool logDestSetFilter (LogDest *dhandle, strref pattern)
 
bool logDestSetLevel (LogDest *dhandle, int maxlevel)
 
void logEnumChans (LogChanEnumCB cb, void *ctx)
 
bool logUnregisterDest (LogDest *dhandle)
 
void logFlush (void)
 
void logShutdown (void)
 
void logRestart (void)
 
void logBatchBegin (void)
 
void logBatchEnd (void)
 
bool logWouldLog (int level, LogChannel *chan)
 

Variables

strref LogLevelNames []
 Array of log level names as strings (e.g., "Fatal", "Error", etc.)
 
strref LogLevelAbbrev []
 Array of single-character log level abbreviations (e.g., "F", "E", etc.)
 
LogChannelLogDefault
 Default log channel used when no channel is specified.
 

Detailed Description

Core logging system API.

Definition in file log.h.