microfmt
Zero-allocation C++ formatting for constrained environments
Loading...
Searching...
No Matches
include
microfmt
log
macros.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2026 Jarosław Pelczar <jarek@jpelczar.com>
2
//
3
// SPDX-License-Identifier: BSD-2-Clause
4
5
#pragma once
6
9
#include "
logger.hpp
"
10
#include <source_location>
11
12
// ============================================================================
13
// Targeted Logger Macros (MICROFMT_LOGGER_*)
14
// ============================================================================
15
16
#define MICROFMT_LOGGER_LOG(logger_instance, lvl, fmt, ...) \
17
do { \
18
if ((logger_instance).should_log(lvl)) { \
19
(logger_instance).log_loc(::std::source_location::current(), lvl, fmt __VA_OPT__(, ) __VA_ARGS__); \
20
} \
21
} while (0)
22
23
#define MICROFMT_LOGGER_TRACE(logger, fmt, ...) \
24
MICROFMT_LOGGER_LOG(logger, ::microfmt::log::level::trace, fmt, __VA_ARGS__)
25
#define MICROFMT_LOGGER_DEBUG(logger, fmt, ...) \
26
MICROFMT_LOGGER_LOG(logger, ::microfmt::log::level::debug, fmt, __VA_ARGS__)
27
#define MICROFMT_LOGGER_INFO(logger, fmt, ...) \
28
MICROFMT_LOGGER_LOG(logger, ::microfmt::log::level::info, fmt, __VA_ARGS__)
29
#define MICROFMT_LOGGER_WARN(logger, fmt, ...) \
30
MICROFMT_LOGGER_LOG(logger, ::microfmt::log::level::warn, fmt, __VA_ARGS__)
31
#define MICROFMT_LOGGER_ERROR(logger, fmt, ...) \
32
MICROFMT_LOGGER_LOG(logger, ::microfmt::log::level::err, fmt, __VA_ARGS__)
33
#define MICROFMT_LOGGER_CRITICAL(logger, fmt, ...) \
34
MICROFMT_LOGGER_LOG(logger, ::microfmt::log::level::critical, fmt, __VA_ARGS__)
35
36
// ============================================================================
37
// Default Logger Macros (MICROFMT_LOG_*)
38
// ============================================================================
39
40
#if defined(MICROFMT_DEFAULT_LOGGER)
41
42
#define MICROFMT_LOG_TRACE(fmt, ...) MICROFMT_LOGGER_TRACE(MICROFMT_DEFAULT_LOGGER, fmt, __VA_ARGS__)
43
#define MICROFMT_LOG_DEBUG(fmt, ...) MICROFMT_LOGGER_DEBUG(MICROFMT_DEFAULT_LOGGER, fmt, __VA_ARGS__)
44
#define MICROFMT_LOG_INFO(fmt, ...) MICROFMT_LOGGER_INFO(MICROFMT_DEFAULT_LOGGER, fmt, __VA_ARGS__)
45
#define MICROFMT_LOG_WARN(fmt, ...) MICROFMT_LOGGER_WARN(MICROFMT_DEFAULT_LOGGER, fmt, __VA_ARGS__)
46
#define MICROFMT_LOG_ERROR(fmt, ...) MICROFMT_LOGGER_ERROR(MICROFMT_DEFAULT_LOGGER, fmt, __VA_ARGS__)
47
#define MICROFMT_LOG_CRITICAL(fmt, ...) MICROFMT_LOGGER_CRITICAL(MICROFMT_DEFAULT_LOGGER, fmt, __VA_ARGS__)
48
49
#elif defined(MICROFMT_ENABLE_DEFAULT_LOGGER)
50
51
#define MICROFMT_LOG_TRACE(fmt, ...) \
52
do { \
53
if (auto *microfmt_default_logger = ::microfmt::log::default_logger()) { \
54
MICROFMT_LOGGER_TRACE(*microfmt_default_logger, fmt, __VA_ARGS__); \
55
} \
56
} while (0)
57
#define MICROFMT_LOG_DEBUG(fmt, ...) \
58
do { \
59
if (auto *microfmt_default_logger = ::microfmt::log::default_logger()) { \
60
MICROFMT_LOGGER_DEBUG(*microfmt_default_logger, fmt, __VA_ARGS__); \
61
} \
62
} while (0)
63
#define MICROFMT_LOG_INFO(fmt, ...) \
64
do { \
65
if (auto *microfmt_default_logger = ::microfmt::log::default_logger()) { \
66
MICROFMT_LOGGER_INFO(*microfmt_default_logger, fmt, __VA_ARGS__); \
67
} \
68
} while (0)
69
#define MICROFMT_LOG_WARN(fmt, ...) \
70
do { \
71
if (auto *microfmt_default_logger = ::microfmt::log::default_logger()) { \
72
MICROFMT_LOGGER_WARN(*microfmt_default_logger, fmt, __VA_ARGS__); \
73
} \
74
} while (0)
75
#define MICROFMT_LOG_ERROR(fmt, ...) \
76
do { \
77
if (auto *microfmt_default_logger = ::microfmt::log::default_logger()) { \
78
MICROFMT_LOGGER_ERROR(*microfmt_default_logger, fmt, __VA_ARGS__); \
79
} \
80
} while (0)
81
#define MICROFMT_LOG_CRITICAL(fmt, ...) \
82
do { \
83
if (auto *microfmt_default_logger = ::microfmt::log::default_logger()) { \
84
MICROFMT_LOGGER_CRITICAL(*microfmt_default_logger, fmt, __VA_ARGS__); \
85
} \
86
} while (0)
87
88
#endif
logger.hpp
Configurable structured loggers and helper functions.
Generated by
1.9.8