sig_log.h

include/sig/base/sig_log.h

sig_log_level_t

typedef enum {
    SIG_LOG_TRACE = 0,
    SIG_LOG_DEBUG,
    SIG_LOG_INFO,
    SIG_LOG_WARN,
    SIG_LOG_ERROR,
    SIG_LOG_FATAL,
} sig_log_level_t;

sig_log_init

sig_status_t sig_log_init(FILE * fp, sig_log_level_t level)
ParameterType
fpFILE *
levelsig_log_level_t

fp may be NULL to disable output while still tracking level. PRECONDITION: sig_log_init must be called before spawning any thread that will log, and sig_log_shutdown must only be called after every logging thread has been joined. Concurrent init/shutdown with logging threads results in undefined behavior.

sig_log_shutdown

void sig_log_shutdown()

shared with sig_log_init

fp may be NULL to disable output while still tracking level. PRECONDITION: sig_log_init must be called before spawning any thread that will log, and sig_log_shutdown must only be called after every logging thread has been joined. Concurrent init/shutdown with logging threads results in undefined behavior.

sig_log_level_from_string

sig_status_t sig_log_level_from_string(const char * name, sig_log_level_t * out)
ParameterType
nameconst char *
outsig_log_level_t *

Parses a level name ("trace" .. "fatal", case-insensitive) into *out. Returns SIG_ERR_INVALID_ARG (leaving *out untouched) for NULL or an unknown name.

sig_log_write

void sig_log_write(sig_log_level_t level, const char * file, int line, const char * fmt, ...)
ParameterType
levelsig_log_level_t
fileconst char *
lineint
fmtconst char *
...

shared with sig_log_level_from_string

Parses a level name ("trace" .. "fatal", case-insensitive) into *out. Returns SIG_ERR_INVALID_ARG (leaving *out untouched) for NULL or an unknown name.

sig_log_trace

#define sig_log_trace(...) sig_log_write(SIG_LOG_TRACE, __FILE__, __LINE__, __VA_ARGS__)

sig_log_debug

#define sig_log_debug(...) sig_log_write(SIG_LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)

sig_log_info

#define sig_log_info(...)  sig_log_write(SIG_LOG_INFO, __FILE__, __LINE__, __VA_ARGS__)

sig_log_warn

#define sig_log_warn(...)  sig_log_write(SIG_LOG_WARN, __FILE__, __LINE__, __VA_ARGS__)

sig_log_error

#define sig_log_error(...) sig_log_write(SIG_LOG_ERROR, __FILE__, __LINE__, __VA_ARGS__)

sig_log_fatal

#define sig_log_fatal(...) sig_log_write(SIG_LOG_FATAL, __FILE__, __LINE__, __VA_ARGS__)