]>
git.proxmox.com Git - ceph.git/blob - ceph/src/crimson/os/seastore/logging.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 #include <fmt/format.h>
8 #include "crimson/common/log.h"
10 #define SET_SUBSYS(subname_) static constexpr auto SOURCE_SUBSYS = ceph_subsys_##subname_
11 #define LOCAL_LOGGER crimson::get_logger(SOURCE_SUBSYS)
12 #define LOGGER(subname_) crimson::get_logger(ceph_subsys_##subname_)
13 #define LOG_PREFIX(x) constexpr auto FNAME = #x
17 #define LOG(level_, MSG, ...) \
18 LOCAL_LOGGER.log(level_, "{}: " MSG, FNAME , ##__VA_ARGS__)
19 #define LOGT(level_, MSG, t, ...) \
20 LOCAL_LOGGER.log(level_, "{}({}): " MSG, FNAME, (void*)&t , ##__VA_ARGS__)
21 #define SUBLOG(subname_, level_, MSG, ...) \
22 LOGGER(subname_).log(level_, "{}: " MSG, FNAME , ##__VA_ARGS__)
23 #define SUBLOGT(subname_, level_, MSG, t, ...) \
24 LOGGER(subname_).log(level_, "{}({}): " MSG, FNAME, (void*)&t , ##__VA_ARGS__)
28 // do compile-time format string validation
29 using namespace fmt::literals
;
30 template<seastar::log_level lv
>
31 void _LOG(seastar::logger
& logger
, std::string_view info
) {
32 logger
.log(lv
, info
.data());
35 #define LOG(level_, MSG, ...) \
36 _LOG<level_>(LOCAL_LOGGER, "{}: " MSG ## _format(FNAME , ##__VA_ARGS__))
37 #define LOGT(level_, MSG, t_, ...) \
38 _LOG<level_>(LOCAL_LOGGER, "{}({}): " MSG ## _format(FNAME, (void*)&t_ , ##__VA_ARGS__))
39 #define SUBLOG(subname_, level_, MSG, ...) \
40 _LOG<level_>(LOGGER(subname_), "{}: " MSG ## _format(FNAME , ##__VA_ARGS__))
41 #define SUBLOGT(subname_, level_, MSG, t_, ...) \
42 _LOG<level_>(LOGGER(subname_), "{}({}): " MSG ## _format(FNAME, (void*)&t_ , ##__VA_ARGS__))
46 #define TRACE(...) LOG(seastar::log_level::trace, __VA_ARGS__)
47 #define TRACET(...) LOGT(seastar::log_level::trace, __VA_ARGS__)
48 #define SUBTRACE(subname_, ...) SUBLOG(subname_, seastar::log_level::trace, __VA_ARGS__)
49 #define SUBTRACET(subname_, ...) SUBLOGT(subname_, seastar::log_level::trace, __VA_ARGS__)
51 #define DEBUG(...) LOG(seastar::log_level::debug, __VA_ARGS__)
52 #define DEBUGT(...) LOGT(seastar::log_level::debug, __VA_ARGS__)
53 #define SUBDEBUG(subname_, ...) SUBLOG(subname_, seastar::log_level::debug, __VA_ARGS__)
54 #define SUBDEBUGT(subname_, ...) SUBLOGT(subname_, seastar::log_level::debug, __VA_ARGS__)
56 #define INFO(...) LOG(seastar::log_level::info, __VA_ARGS__)
57 #define INFOT(...) LOGT(seastar::log_level::info, __VA_ARGS__)
58 #define SUBINFO(subname_, ...) SUBLOG(subname_, seastar::log_level::info, __VA_ARGS__)
59 #define SUBINFOT(subname_, ...) SUBLOGT(subname_, seastar::log_level::info, __VA_ARGS__)
61 #define WARN(...) LOG(seastar::log_level::warn, __VA_ARGS__)
62 #define WARNT(...) LOGT(seastar::log_level::warn, __VA_ARGS__)
63 #define SUBWARN(subname_, ...) SUBLOG(subname_, seastar::log_level::warn, __VA_ARGS__)
64 #define SUBWARNT(subname_, ...) SUBLOGT(subname_, seastar::log_level::warn, __VA_ARGS__)
66 #define ERROR(...) LOG(seastar::log_level::error, __VA_ARGS__)
67 #define ERRORT(...) LOGT(seastar::log_level::error, __VA_ARGS__)
68 #define SUBERROR(subname_, ...) SUBLOG(subname_, seastar::log_level::error, __VA_ARGS__)
69 #define SUBERRORT(subname_, ...) SUBLOGT(subname_, seastar::log_level::error, __VA_ARGS__)