$darkmode
Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
log.h
Go to the documentation of this file.
1 
6 #ifndef LOG_H
7 #define LOG_H
8 
13 typedef enum {
15  LOG_LEVEL_DEBUG = 10,
18  20,
21  LOG_LEVEL_ERROR = 40,
23  LOG_LEVEL_CRITICAL = 50
26 
33 typedef void (*LogCallback)(LogLevel level, const char* tag,
34  const char* message);
35 
46 __attribute__((format(printf, 3, 4))) void log_message(LogLevel level,
47  const char* tag,
48  const char* format, ...);
49 
54 void log_set_callback(LogCallback callback);
55 
60 void log_set_level(LogLevel level);
61 
67 
68 /* Helper macros for easier logging */
69 
71 #define LOG_DEBUG(tag, ...) log_message(LOG_LEVEL_DEBUG, tag, __VA_ARGS__)
73 #define LOG_INFO(tag, ...) log_message(LOG_LEVEL_INFO, tag, __VA_ARGS__)
75 #define LOG_WARNING(tag, ...) log_message(LOG_LEVEL_WARNING, tag, __VA_ARGS__)
77 #define LOG_WARN(tag, ...) LOG_WARNING(tag, __VA_ARGS__)
79 #define LOG_ERROR(tag, ...) log_message(LOG_LEVEL_ERROR, tag, __VA_ARGS__)
81 #define LOG_CRITICAL(tag, ...) log_message(LOG_LEVEL_CRITICAL, tag, __VA_ARGS__)
82 
83 #endif /* LOG_H */
void log_set_callback(LogCallback callback)
Sets a custom callback for log messages.
Definition: log.c:91
void log_set_level(LogLevel level)
Sets the global minimum log level.
Definition: log.c:85
void log_message(LogLevel level, const char *tag, const char *format,...)
Logs a formatted message.
Definition: log.c:104
void(* LogCallback)(LogLevel level, const char *tag, const char *message)
Callback type for log message interception.
Definition: log.h:33
LogLevel
Severity levels for log filtering.
Definition: log.h:13
@ LOG_LEVEL_CRITICAL
Definition: log.h:23
@ LOG_LEVEL_DEBUG
Definition: log.h:15
@ LOG_LEVEL_ERROR
Definition: log.h:21
@ LOG_LEVEL_WARNING
Definition: log.h:20
@ LOG_LEVEL_NOTSET
Definition: log.h:14
@ LOG_LEVEL_INFO
Definition: log.h:17
LogLevel log_get_level(void)
Retrieves the current global log level.
Definition: log.c:96