X_LOG_VERSION_MAJOR
#define X_LOG_VERSION_MAJOR 1
STDX - Logging Utilities Part of the STDX General Purpose C Library by marciovmf License: MIT https://github.com/marciovmf/stdx
Provides a flexible logging system with support for:
To compile the implementation define X_IMPL_LOG
in one source file before including this header.
#define X_LOG_VERSION_MAJOR 1
#define X_LOG_VERSION_MINOR 0
#define X_LOG_VERSION_PATCH 0
#define X_LOG_VERSION(X_LOG_VERSION_MAJOR *10000+X_LOG_VERSION_MINOR *100+X_LOG_VERSION_PATCH)
Default buffer size for log messages. Can be overriden before including this header
#define X_LOG_BUFFER_SIZE(1024 *4)
typedef enum{
XLOG_LEVEL_DEBUG=0,
XLOG_LEVEL_INFO,
XLOG_LEVEL_WARNING,
XLOG_LEVEL_ERROR,
XLOG_LEVEL_FATAL,
}XLogLevel;
typedef enum{
XLOG_OUTPUT_NONE=0,
XLOG_OUTPUT_CONSOLE=1<<0,
XLOG_OUTPUT_FILE=1<<1,
XLOG_OUTPUT_BOTH=XLOG_OUTPUT_CONSOLE|XLOG_OUTPUT_FILE,
}XLogOutputFlags;
typedef enum{
XLOG_PLAIN=0,
XLOG_TIMESTAMP=1<<0,
XLOG_TAG=1<<1,
XLOG_SOURCEINFO=1<<2,
XLOG_DEFAULT=XLOG_TAG|XLOG_TIMESTAMP|XLOG_SOURCEINFO
}XLogComponent;
typedef enum{
XLOG_COLOR_DEFAULT,
XLOG_COLOR_BLACK,
XLOG_COLOR_RED,
XLOG_COLOR_GREEN,
XLOG_COLOR_YELLOW,
XLOG_COLOR_BLUE,
XLOG_COLOR_MAGENTA,
XLOG_COLOR_CYAN,
XLOG_COLOR_WHITE,
XLOG_COLOR_BRIGHT_BLACK,
XLOG_COLOR_BRIGHT_RED,
XLOG_COLOR_BRIGHT_GREEN,
XLOG_COLOR_BRIGHT_YELLOW,
XLOG_COLOR_BRIGHT_BLUE,
XLOG_COLOR_BRIGHT_MAGENTA,
XLOG_COLOR_BRIGHT_CYAN,
XLOG_COLOR_BRIGHT_WHITE,
}XLogColor;
Initialize the logging system.
void logger_init(
XLogOutputFlags outputs,
XLogLevel level,
const char *filename
);
XLogOutputFlags outputsXLogLevel levelconst char *filenameShutdown the logging system and release resources.
void logger_close(void);
Set the output stream used for console logging. This does not affect file logging configured via logger_init() (XLOG_OUTPUT_FILE). Passing NULL resets to stdout.
void logger_set_console(FILE *out);
Get the current console output stream (never NULL; defaults to stdout).
FILE * logger_get_console(void);
Emit a formatted log message with full context information.
void logger_log(
XLogLevel level,
XLogColor fg,
XLogColor bg,
XLogComponent components,
const char *file,
int line,
const char *func,
const char *fmt,
...
);
XLogLevel levelXLogColor fgXLogColor bgXLogComponent componentsconst char *fileint lineconst char *funcconst char *fmtEmit a formatted log message with full context information, overriding the console output stream. If console output is enabled (XLOG_OUTPUT_CONSOLE), the message is written to `out` when non-NULL. If `out` is NULL, the logger's default console stream is used. File output configured via logger_init() is still honored when XLOG_OUTPUT_FILE is enabled.
void logger_log_to(
FILE *out,
XLogLevel level,
XLogColor fg,
XLogColor bg,
XLogComponent components,
const char *file,
int line,
const char *func,
const char *fmt,
...
);
Emit a formatted log message without source context.
void logger_print(
XLogLevel level,
const char *fmt,
...
);
XLogLevel levelconst char *fmt#define X_LOG_BREAK() ((void)0)
Emit a raw log message with explicit formatting and components. Automatically injects source file, line, and function information.
#define x_log_raw(out, level, fg, bg, components, fmt, ...) \
logger_log_to(out, level, fg, bg, components, __FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__)
Emit a debug-level log message.
#define x_log_debug(fmt, ...) \
logger_log(XLOG_LEVEL_DEBUG, XLOG_COLOR_BLUE, XLOG_COLOR_BLACK, XLOG_DEFAULT, __FILE__, __LINE__, __func__, (const char *)fmt "\n", ##__VA_ARGS__)
Emit an informational log message with timestamp.
#define x_log_info(fmt, ...) \
logger_log(XLOG_LEVEL_INFO, XLOG_COLOR_WHITE, XLOG_COLOR_BLACK, XLOG_TIMESTAMP, __FILE__, __LINE__, __func__, (const char *)fmt "\n", ##__VA_ARGS__)
Emit a warning-level log message.
#define x_log_warning(fmt, ...) \
logger_log(XLOG_LEVEL_WARNING, XLOG_COLOR_YELLOW, XLOG_COLOR_BLACK, XLOG_DEFAULT, __FILE__, __LINE__, __func__, (const char *)fmt "\n", ##__VA_ARGS__)
Emit an error-level log message.
#define x_log_error(fmt, ...) \
logger_log(XLOG_LEVEL_ERROR, XLOG_COLOR_RED, XLOG_COLOR_BLACK, XLOG_DEFAULT, __FILE__, __LINE__, __func__, (const char *)fmt "\n", ##__VA_ARGS__)
Emit a fatal log message and trigger a break action. Calls X_LOG_BREAK() after logging.
#define x_log_fatal(fmt, ...) \
do{\
logger_log(XLOG_LEVEL_FATAL, XLOG_COLOR_WHITE, XLOG_COLOR_RED, XLOG_DEFAULT, __FILE__, __LINE__, __func__, (const char *)fmt "\n", ##__VA_ARGS__);\
X_LOG_BREAK();\
}while(0)