2021-08-25 15:20:11 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#ifdef __GNUC__
|
|
|
|
#define ATTRIB_PRINTF(start, end) __attribute__((format(printf, start, end)))
|
|
|
|
#else
|
|
|
|
#define ATTRIB_PRINTF(start, end)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
enum LogPriority {
|
2021-08-25 15:33:16 +00:00
|
|
|
LOG_SILENT,
|
|
|
|
LOG_ERROR,
|
2021-08-25 15:20:11 +00:00
|
|
|
LOG_INFO,
|
|
|
|
LOG_DEBUG,
|
|
|
|
};
|
|
|
|
|
|
|
|
class LogScope {
|
|
|
|
const char *name;
|
2021-08-25 15:33:16 +00:00
|
|
|
enum LogPriority priority;
|
|
|
|
|
|
|
|
bool has(enum LogPriority priority);
|
2021-08-25 15:20:11 +00:00
|
|
|
void vprintf(enum LogPriority priority, const char *fmt, va_list args) ATTRIB_PRINTF(3, 0);
|
|
|
|
void vlogf(enum LogPriority priority, const char *fmt, va_list args) ATTRIB_PRINTF(3, 0);
|
|
|
|
|
|
|
|
public:
|
|
|
|
LogScope(const char *name);
|
2021-08-25 15:33:16 +00:00
|
|
|
LogScope(const char *name, enum LogPriority priority);
|
2021-08-25 15:20:11 +00:00
|
|
|
void errorf(const char *fmt, ...) ATTRIB_PRINTF(2, 3);
|
|
|
|
void infof(const char *fmt, ...) ATTRIB_PRINTF(2, 3);
|
|
|
|
void debugf(const char *fmt, ...) ATTRIB_PRINTF(2, 3);
|
|
|
|
|
|
|
|
void errorf_errno(const char *fmt, ...) ATTRIB_PRINTF(2, 3);
|
|
|
|
};
|