Skip to content

Commit 6ef9088

Browse files
committed
Swift: rename LOG_IMPL->LOG_WITH_LEVEL and strengthen it
1 parent 5a01fec commit 6ef9088

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

swift/extractor/infra/log/SwiftLogging.h

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,24 @@
1717
// * passing a logger around using a `Logger& logger` function parameter
1818
// They are created with a name that appears in the logs and can be used to filter debug levels (see
1919
// `Logger`).
20-
#define LOG_CRITICAL(...) LOG_IMPL(codeql::Log::Level::critical, __VA_ARGS__)
21-
#define LOG_ERROR(...) LOG_IMPL(codeql::Log::Level::error, __VA_ARGS__)
22-
#define LOG_WARNING(...) LOG_IMPL(codeql::Log::Level::warning, __VA_ARGS__)
23-
#define LOG_INFO(...) LOG_IMPL(codeql::Log::Level::info, __VA_ARGS__)
24-
#define LOG_DEBUG(...) LOG_IMPL(codeql::Log::Level::debug, __VA_ARGS__)
25-
#define LOG_TRACE(...) LOG_IMPL(codeql::Log::Level::trace, __VA_ARGS__)
20+
#define LOG_CRITICAL(...) LOG_WITH_LEVEL(codeql::Log::Level::critical, __VA_ARGS__)
21+
#define LOG_ERROR(...) LOG_WITH_LEVEL(codeql::Log::Level::error, __VA_ARGS__)
22+
#define LOG_WARNING(...) LOG_WITH_LEVEL(codeql::Log::Level::warning, __VA_ARGS__)
23+
#define LOG_INFO(...) LOG_WITH_LEVEL(codeql::Log::Level::info, __VA_ARGS__)
24+
#define LOG_DEBUG(...) LOG_WITH_LEVEL(codeql::Log::Level::debug, __VA_ARGS__)
25+
#define LOG_TRACE(...) LOG_WITH_LEVEL(codeql::Log::Level::trace, __VA_ARGS__)
26+
27+
// only do the actual logging if the picked up `Logger` instance is configured to handle the
28+
// provided log level. `LEVEL` must be a compile-time constant. `logger()` is evaluated once
29+
#define LOG_WITH_LEVEL(LEVEL, ...) \
30+
do { \
31+
constexpr codeql::Log::Level _level = LEVEL; \
32+
codeql::Logger& _logger = logger(); \
33+
if (_level >= _logger.level()) { \
34+
BINLOG_CREATE_SOURCE_AND_EVENT(_logger.writer(), _level, /* category */, binlog::clockNow(), \
35+
__VA_ARGS__); \
36+
} \
37+
} while (false)
2638

2739
// avoid calling into binlog's original macros
2840
#undef BINLOG_CRITICAL
@@ -50,16 +62,6 @@
5062
#undef BINLOG_TRACE_C
5163
#undef BINLOG_TRACE_WC
5264

53-
// only do the actual logging if the picked up `Logger` instance is configured to handle the
54-
// provided log level
55-
#define LOG_IMPL(severity, ...) \
56-
do { \
57-
if (auto& _logger = logger(); severity >= _logger.level()) { \
58-
BINLOG_CREATE_SOURCE_AND_EVENT(_logger.writer(), severity, , binlog::clockNow(), \
59-
__VA_ARGS__); \
60-
} \
61-
} while (false)
62-
6365
namespace codeql {
6466

6567
// This class is responsible for the global log state (outputs, log level rules, flushing)

0 commit comments

Comments
 (0)