|
19 | 19 | * This header offers a bunch of "LOG_*" functions that, with the default |
20 | 20 | * implementation, just use printf, but honour a verbosity level. |
21 | 21 | * |
| 22 | + * If you want a logging unit name to be prefixed to the logs, define LOG_UNIT |
| 23 | + * in the source file before including this header. |
| 24 | + * |
22 | 25 | * If desired, it is possible to implement a log module which then will be used |
23 | 26 | * instead the default printf-based implementation. In order to do so, the log |
24 | 27 | * module has to |
@@ -70,18 +73,29 @@ enum { |
70 | 73 | #define LOG_LEVEL LOG_INFO |
71 | 74 | #endif |
72 | 75 |
|
| 76 | +/** |
| 77 | + * @brief Log with/without unit. |
| 78 | + * |
| 79 | + * @note Internal use only, use @ref LOG() instead. |
| 80 | + */ |
| 81 | +#ifdef LOG_UNIT |
| 82 | +# define LOG_WRITE(level, fmt, ...) log_write((level), "%s: "fmt, LOG_UNIT, ##__VA_ARGS__) |
| 83 | +#else |
| 84 | +# define LOG_WRITE(level, ...) log_write((level), __VA_ARGS__) |
| 85 | +#endif |
| 86 | + |
73 | 87 | /** |
74 | 88 | * @brief Log message if level <= LOG_LEVEL |
75 | 89 | */ |
76 | 90 | #ifdef __clang__ /* following pragmas required for clang 3.8.0 */ |
77 | 91 | #define LOG(level, ...) do { \ |
78 | 92 | _Pragma("clang diagnostic push") \ |
79 | 93 | _Pragma("clang diagnostic ignored \"-Wtautological-compare\"") \ |
80 | | - if ((level) <= LOG_LEVEL) log_write((level), __VA_ARGS__); } while (0U) \ |
| 94 | + if ((level) <= LOG_LEVEL) LOG_WRITE((level), __VA_ARGS__); } while (0U) \ |
81 | 95 | _Pragma("clang diagnostic pop") |
82 | 96 | #else |
83 | 97 | #define LOG(level, ...) do { \ |
84 | | - if ((level) <= LOG_LEVEL) log_write((level), __VA_ARGS__); } while (0U) |
| 98 | + if ((level) <= LOG_LEVEL) LOG_WRITE((level), __VA_ARGS__); } while (0U) |
85 | 99 | #endif /* __clang__ */ |
86 | 100 |
|
87 | 101 | /** |
|
0 commit comments