dte test coverage


Directory: ./
File: src/util/log.h
Date: 2025-02-14 16:55:22
Exec Total Coverage
Lines: 0 2 0.0%
Functions: 0 2 0.0%
Branches: 0 0 -%

Line Branch Exec Source
1 #ifndef UTIL_LOG_H
2 #define UTIL_LOG_H
3
4 #include <errno.h>
5 #include <stdarg.h>
6 #include <stdbool.h>
7 #include <string.h>
8 #include "debug.h"
9 #include "macros.h"
10
11 // NOLINTNEXTLINE(readability-enum-initial-value,cert-int09-c)
12 typedef enum {
13 LOG_LEVEL_INVALID = -1,
14 LOG_LEVEL_NONE = 0,
15 LOG_LEVEL_CRITICAL,
16 LOG_LEVEL_ERROR,
17 LOG_LEVEL_WARNING,
18 LOG_LEVEL_NOTICE,
19 LOG_LEVEL_INFO,
20 LOG_LEVEL_DEBUG,
21 LOG_LEVEL_TRACE,
22 } LogLevel;
23
24 #define LOG(level, ...) log_msg(level, __FILE__, __LINE__, __VA_ARGS__)
25 #define LOG_CRITICAL(...) LOG(LOG_LEVEL_CRITICAL, __VA_ARGS__)
26 #define LOG_ERROR(...) LOG(LOG_LEVEL_ERROR, __VA_ARGS__)
27 #define LOG_ERRNO(prefix) LOG_ERROR("%s: %s", prefix, strerror(errno))
28 #define LOG_WARNING(...) LOG(LOG_LEVEL_WARNING, __VA_ARGS__)
29 #define LOG_NOTICE(...) LOG(LOG_LEVEL_NOTICE, __VA_ARGS__)
30 #define LOG_INFO(...) LOG(LOG_LEVEL_INFO, __VA_ARGS__)
31 #define WARN_ON(a) do {if (unlikely(a)) {LOG_WARNING("%s", #a);}} while (0)
32
33 bool log_level_enabled(LogLevel level);
34
35 #if DEBUG >= 2
36 #define LOG_DEBUG(...) LOG(LOG_LEVEL_DEBUG, __VA_ARGS__)
37 static inline bool log_level_debug_enabled(void) {return log_level_enabled(LOG_LEVEL_DEBUG);}
38 #else
39 static inline PRINTF(1) void LOG_DEBUG(const char* UNUSED_ARG(fmt), ...) {}
40 static inline bool log_level_debug_enabled(void) {return false;}
41 #endif
42
43 #if DEBUG >= 3
44 #define LOG_TRACE(...) LOG(LOG_LEVEL_TRACE, __VA_ARGS__)
45 static inline bool log_level_trace_enabled(void) {return log_level_enabled(LOG_LEVEL_TRACE);}
46 #else
47 static inline PRINTF(1) void LOG_TRACE(const char* UNUSED_ARG(fmt), ...) {}
48 static inline bool log_level_trace_enabled(void) {return false;}
49 #endif
50
51 LogLevel log_open(const char *filename, LogLevel level, bool use_color);
52 bool log_close(void);
53 void log_msg(LogLevel level, const char *file, int line, const char *fmt, ...) PRINTF(4);
54 void log_msgv(LogLevel level, const char *file, int line, const char *fmt, va_list ap) VPRINTF(4);
55 void log_write(LogLevel level, const char *str, size_t len);
56 LogLevel log_level_default(void);
57 LogLevel log_level_from_str(const char *str);
58 const char *log_level_to_str(LogLevel level);
59
60 #endif
61