log4cpp
1.1.6
Toggle main menu visibility
Loading...
Searching...
No Matches
LogMacros.hh
Go to the documentation of this file.
1
/*
2
* LogMacros.hh
3
*
4
* Copyright 2026, Alexander Perepelkin. All rights reserved.
5
*
6
* See the COPYING file for the terms of usage and distribution.
7
*/
8
9
#ifndef LOG4CPP_LOGMACROS_H
10
#define LOG4CPP_LOGMACROS_H
11
12
#include <
log4cpp/Category.hh
>
13
#include <sstream>
14
40
41
// Possible values for LOG4CPP_ACTIVE_LEVEL.
42
// These preprocessor constants correspond to the log4cpp::Priority enum values.
43
#define LOG4CPP_PRIORITY_EMERG 0
44
#define LOG4CPP_PRIORITY_FATAL 0
// same as EMERG
45
#define LOG4CPP_PRIORITY_ALERT 100
46
#define LOG4CPP_PRIORITY_CRIT 200
47
#define LOG4CPP_PRIORITY_ERROR 300
48
#define LOG4CPP_PRIORITY_WARN 400
49
#define LOG4CPP_PRIORITY_NOTICE 500
50
#define LOG4CPP_PRIORITY_INFO 600
51
#define LOG4CPP_PRIORITY_DEBUG 700
52
#define LOG4CPP_PRIORITY_NOTSET 800
53
54
// Compile-time stripping
55
#ifdef LOG4CPP_ACTIVE_LEVEL
56
#if LOG4CPP_ACTIVE_LEVEL < LOG4CPP_PRIORITY_DEBUG
57
#define LOG4CPP_DISABLE_DEBUG
58
#define LOG4CPP_DISABLE_DEBUG_S
59
#endif
60
#if LOG4CPP_ACTIVE_LEVEL < LOG4CPP_PRIORITY_INFO
61
#define LOG4CPP_DISABLE_INFO
62
#define LOG4CPP_DISABLE_INFO_S
63
#endif
64
#if LOG4CPP_ACTIVE_LEVEL < LOG4CPP_PRIORITY_NOTICE
65
#define LOG4CPP_DISABLE_NOTICE
66
#define LOG4CPP_DISABLE_NOTICE_S
67
#endif
68
#if LOG4CPP_ACTIVE_LEVEL < LOG4CPP_PRIORITY_WARN
69
#define LOG4CPP_DISABLE_WARN
70
#define LOG4CPP_DISABLE_WARN_S
71
#endif
72
#if LOG4CPP_ACTIVE_LEVEL < LOG4CPP_PRIORITY_ERROR
73
#define LOG4CPP_DISABLE_ERROR
74
#define LOG4CPP_DISABLE_ERROR_S
75
#endif
76
#if LOG4CPP_ACTIVE_LEVEL < LOG4CPP_PRIORITY_CRIT
77
#define LOG4CPP_DISABLE_CRIT
78
#define LOG4CPP_DISABLE_CRIT_S
79
#endif
80
#if LOG4CPP_ACTIVE_LEVEL < LOG4CPP_PRIORITY_ALERT
81
#define LOG4CPP_DISABLE_ALERT
82
#define LOG4CPP_DISABLE_ALERT_S
83
#endif
84
#if LOG4CPP_ACTIVE_LEVEL < LOG4CPP_PRIORITY_FATAL
85
#define LOG4CPP_DISABLE_FATAL
86
#define LOG4CPP_DISABLE_FATAL_S
87
#endif
88
#if LOG4CPP_ACTIVE_LEVEL < LOG4CPP_PRIORITY_EMERG
89
#define LOG4CPP_DISABLE_EMERG
90
#define LOG4CPP_DISABLE_EMERG_S
91
#endif
92
#endif
// LOG4CPP_ACTIVE_LEVEL
93
94
// Detect variadic macro support
95
#if defined(__cplusplus) && __cplusplus >= 201103L
96
#define LOG4CPP_VARIADIC_MACROS_SUPPORTED 1
97
#elif defined(_MSC_VER) && _MSC_VER >= 1400
98
#define LOG4CPP_VARIADIC_MACROS_SUPPORTED 1
99
#else
100
#define LOG4CPP_VARIADIC_MACROS_SUPPORTED 0
101
#endif
102
103
// Generic formatted logging
104
#if LOG4CPP_VARIADIC_MACROS_SUPPORTED
105
#define LOG4CPP_LOG(logger, priority, ...) \
106
do { \
107
if ((logger).isPriorityEnabled(priority)) { \
108
(logger).log(priority, __VA_ARGS__); \
109
} \
110
} while (0)
124
#define LOG4CPP_LOG(logger, priority, ...) \
125
do { \
126
if ((logger).isPriorityEnabled(priority)) { \
127
(logger).log(priority, __VA_ARGS__); \
128
} \
129
} while (0)
130
131
// Level macros using DISABLE flags
132
#ifdef LOG4CPP_DISABLE_DEBUG
133
#define LOG4CPP_DEBUG(logger, ...) ((void)0)
134
#else
141
#define LOG4CPP_DEBUG(logger, ...) LOG4CPP_LOG(logger, log4cpp::Priority::DEBUG, __VA_ARGS__)
142
#endif
143
144
#ifdef LOG4CPP_DISABLE_INFO
145
#define LOG4CPP_INFO(logger, ...) ((void)0)
146
#else
153
#define LOG4CPP_INFO(logger, ...) LOG4CPP_LOG(logger, log4cpp::Priority::INFO, __VA_ARGS__)
154
#endif
155
156
#ifdef LOG4CPP_DISABLE_NOTICE
157
#define LOG4CPP_NOTICE(logger, ...) ((void)0)
158
#else
165
#define LOG4CPP_NOTICE(logger, ...) LOG4CPP_LOG(logger, log4cpp::Priority::NOTICE, __VA_ARGS__)
166
#endif
167
168
#ifdef LOG4CPP_DISABLE_WARN
169
#define LOG4CPP_WARN(logger, ...) ((void)0)
170
#else
177
#define LOG4CPP_WARN(logger, ...) LOG4CPP_LOG(logger, log4cpp::Priority::WARN, __VA_ARGS__)
178
#endif
179
180
#ifdef LOG4CPP_DISABLE_ERROR
181
#define LOG4CPP_ERROR(logger, ...) ((void)0)
182
#else
189
#define LOG4CPP_ERROR(logger, ...) LOG4CPP_LOG(logger, log4cpp::Priority::ERROR, __VA_ARGS__)
190
#endif
191
192
#ifdef LOG4CPP_DISABLE_CRIT
193
#define LOG4CPP_CRIT(logger, ...) ((void)0)
194
#else
201
#define LOG4CPP_CRIT(logger, ...) LOG4CPP_LOG(logger, log4cpp::Priority::CRIT, __VA_ARGS__)
202
#endif
203
204
#ifdef LOG4CPP_DISABLE_ALERT
205
#define LOG4CPP_ALERT(logger, ...) ((void)0)
206
#else
213
#define LOG4CPP_ALERT(logger, ...) LOG4CPP_LOG(logger, log4cpp::Priority::ALERT, __VA_ARGS__)
214
#endif
215
216
#ifdef LOG4CPP_DISABLE_FATAL
217
#define LOG4CPP_FATAL(logger, ...) ((void)0)
218
#else
225
#define LOG4CPP_FATAL(logger, ...) LOG4CPP_LOG(logger, log4cpp::Priority::FATAL, __VA_ARGS__)
226
#endif
227
228
#ifdef LOG4CPP_DISABLE_EMERG
229
#define LOG4CPP_EMERG(logger, ...) ((void)0)
230
#else
237
#define LOG4CPP_EMERG(logger, ...) LOG4CPP_LOG(logger, log4cpp::Priority::EMERG, __VA_ARGS__)
238
#endif
239
240
#else
// LOG4CPP_VARIADIC_MACROS_SUPPORTED
241
// Fallback for C++98: fixed-argument macros
242
#define LOG4CPP_LOG_NO_VA(logger, priority, msg) \
243
do { \
244
if ((logger).isPriorityEnabled(priority)) { \
245
(logger).log(priority, msg); \
246
} \
247
} while (0)
248
249
#ifdef LOG4CPP_DISABLE_DEBUG
250
#define LOG4CPP_DEBUG(logger, msg) ((void)0)
251
#else
252
#define LOG4CPP_DEBUG(logger, msg) LOG4CPP_LOG_NO_VA(logger, log4cpp::Priority::DEBUG, msg)
253
#endif
254
255
#ifdef LOG4CPP_DISABLE_INFO
256
#define LOG4CPP_INFO(logger, msg) ((void)0)
257
#else
258
#define LOG4CPP_INFO(logger, msg) LOG4CPP_LOG_NO_VA(logger, log4cpp::Priority::INFO, msg)
259
#endif
260
261
#ifdef LOG4CPP_DISABLE_NOTICE
262
#define LOG4CPP_NOTICE(logger, msg) ((void)0)
263
#else
264
#define LOG4CPP_NOTICE(logger, msg) LOG4CPP_LOG_NO_VA(logger, log4cpp::Priority::NOTICE, msg)
265
#endif
266
267
#ifdef LOG4CPP_DISABLE_WARN
268
#define LOG4CPP_WARN(logger, msg) ((void)0)
269
#else
270
#define LOG4CPP_WARN(logger, msg) LOG4CPP_LOG_NO_VA(logger, log4cpp::Priority::WARN, msg)
271
#endif
272
273
#ifdef LOG4CPP_DISABLE_ERROR
274
#define LOG4CPP_ERROR(logger, msg) ((void)0)
275
#else
276
#define LOG4CPP_ERROR(logger, msg) LOG4CPP_LOG_NO_VA(logger, log4cpp::Priority::ERROR, msg)
277
#endif
278
279
#ifdef LOG4CPP_DISABLE_CRIT
280
#define LOG4CPP_CRIT(logger, msg) ((void)0)
281
#else
282
#define LOG4CPP_CRIT(logger, msg) LOG4CPP_LOG_NO_VA(logger, log4cpp::Priority::CRIT, msg)
283
#endif
284
285
#ifdef LOG4CPP_DISABLE_ALERT
286
#define LOG4CPP_ALERT(logger, msg) ((void)0)
287
#else
288
#define LOG4CPP_ALERT(logger, msg) LOG4CPP_LOG_NO_VA(logger, log4cpp::Priority::ALERT, msg)
289
#endif
290
291
#ifdef LOG4CPP_DISABLE_FATAL
292
#define LOG4CPP_FATAL(logger, msg) ((void)0)
293
#else
294
#define LOG4CPP_FATAL(logger, msg) LOG4CPP_LOG_NO_VA(logger, log4cpp::Priority::FATAL, msg)
295
#endif
296
297
#ifdef LOG4CPP_DISABLE_EMERG
298
#define LOG4CPP_EMERG(logger, msg) ((void)0)
299
#else
300
#define LOG4CPP_EMERG(logger, msg) LOG4CPP_LOG_NO_VA(logger, log4cpp::Priority::EMERG, msg)
301
#endif
302
303
#endif
// LOG4CPP_VARIADIC_MACROS_SUPPORTED
304
305
// Streaming macros
306
// Generic streaming logging
307
#define LOG4CPP_STREAM(logger, priority, streamSequence) \
308
do { \
309
if ((logger).isPriorityEnabled(priority)) { \
310
(logger).getStream(priority) << streamSequence; \
311
} \
312
} while (0)
313
314
#ifdef LOG4CPP_DISABLE_DEBUG_S
315
#define LOG4CPP_DEBUG_S(logger, streamSequence) ((void)0)
316
#else
317
#define LOG4CPP_DEBUG_S(logger, streamSequence) LOG4CPP_STREAM(logger, log4cpp::Priority::DEBUG, streamSequence)
318
#endif
319
320
#ifdef LOG4CPP_DISABLE_INFO_S
321
#define LOG4CPP_INFO_S(logger, streamSequence) ((void)0)
322
#else
323
#define LOG4CPP_INFO_S(logger, streamSequence) LOG4CPP_STREAM(logger, log4cpp::Priority::INFO, streamSequence)
324
#endif
325
326
#ifdef LOG4CPP_DISABLE_NOTICE_S
327
#define LOG4CPP_NOTICE_S(logger, streamSequence) ((void)0)
328
#else
329
#define LOG4CPP_NOTICE_S(logger, streamSequence) LOG4CPP_STREAM(logger, log4cpp::Priority::NOTICE, streamSequence)
330
#endif
331
332
#ifdef LOG4CPP_DISABLE_WARN_S
333
#define LOG4CPP_WARN_S(logger, streamSequence) ((void)0)
334
#else
335
#define LOG4CPP_WARN_S(logger, streamSequence) LOG4CPP_STREAM(logger, log4cpp::Priority::WARN, streamSequence)
336
#endif
337
338
#ifdef LOG4CPP_DISABLE_ERROR_S
339
#define LOG4CPP_ERROR_S(logger, streamSequence) ((void)0)
340
#else
341
#define LOG4CPP_ERROR_S(logger, streamSequence) LOG4CPP_STREAM(logger, log4cpp::Priority::ERROR, streamSequence)
342
#endif
343
344
#ifdef LOG4CPP_DISABLE_CRIT_S
345
#define LOG4CPP_CRIT_S(logger, streamSequence) ((void)0)
346
#else
347
#define LOG4CPP_CRIT_S(logger, streamSequence) LOG4CPP_STREAM(logger, log4cpp::Priority::CRIT, streamSequence)
348
#endif
349
350
#ifdef LOG4CPP_DISABLE_ALERT_S
351
#define LOG4CPP_ALERT_S(logger, streamSequence) ((void)0)
352
#else
353
#define LOG4CPP_ALERT_S(logger, streamSequence) LOG4CPP_STREAM(logger, log4cpp::Priority::ALERT, streamSequence)
354
#endif
355
356
#ifdef LOG4CPP_DISABLE_FATAL_S
357
#define LOG4CPP_FATAL_S(logger, streamSequence) ((void)0)
358
#else
359
#define LOG4CPP_FATAL_S(logger, streamSequence) LOG4CPP_STREAM(logger, log4cpp::Priority::FATAL, streamSequence)
360
#endif
361
362
#ifdef LOG4CPP_DISABLE_EMERG_S
363
#define LOG4CPP_EMERG_S(logger, streamSequence) ((void)0)
364
#else
365
#define LOG4CPP_EMERG_S(logger, streamSequence) LOG4CPP_STREAM(logger, log4cpp::Priority::EMERG, streamSequence)
366
#endif
367
368
#endif
// LOG4CPP_LOGMACROS_H
Category.hh
include
log4cpp
LogMacros.hh
Generated by
1.17.0