GLOG comat macro LOG_F

This commit is contained in:
janis 2022-06-20 22:46:11 +01:00
parent e9ca6a04e7
commit 8119729fb0
2 changed files with 26 additions and 2 deletions

View file

@ -6,8 +6,9 @@ version = "0.1.0"
[lib] [lib]
name = "libjournal" name = "libjournal"
cc-flags = ["-DJOURNAL_GLOG_COMPAT"]
[[bin]] [[bin]]
name = "journal" name = "journal"
cc-flags = ["-DJOURNAL_ALL", "-gcodeview", "-g"] cc-flags = ["-DJOURNAL_GLOG_COMPAT", "-DJOURNAL_ALL", "-gcodeview", "-g"]
ld-flags = ["-g", "-gcodeview"] ld-flags = ["-g", "-gcodeview"]

View file

@ -76,7 +76,11 @@ auto add_sink(std::shared_ptr<std::ostream> stream,
const LogVerbosity &min = LogVerbosity::Trace, const LogVerbosity &min = LogVerbosity::Trace,
const LogVerbosity &max = LogVerbosity::Error) -> void; const LogVerbosity &max = LogVerbosity::Error) -> void;
#ifdef JOURNAL_ALL /// JOURNAL_NONE: undefines all logs
/// JOURNAL_ALL: defines all logs, on by default
/// JOURNAL_NOT_ALL: does not define any logs by default even it JOURNAL_ALL is
/// defined, off by default
#if defined(JOURNAL_ALL) && !defined(JOURNAL_NONE) && !defined(JOURNAL_NOT_ALL)
#define JOURNAL_TRACE #define JOURNAL_TRACE
#define JOURNAL_DEBUG #define JOURNAL_DEBUG
#define JOURNAL_INFO #define JOURNAL_INFO
@ -84,6 +88,14 @@ auto add_sink(std::shared_ptr<std::ostream> stream,
#define JOURNAL_ERROR #define JOURNAL_ERROR
#endif #endif
#if defined(JOURNAL_NONE)
#undef JOURNAL_TRACE
#undef JOURNAL_DEBUG
#undef JOURNAL_INFO
#undef JOURNAL_WARN
#undef JOURNAL_ERROR
#endif
#ifdef JOURNAL_TRACE #ifdef JOURNAL_TRACE
template <typename... Args> template <typename... Args>
inline constexpr auto inline constexpr auto
@ -149,4 +161,15 @@ template <typename... Args>
inline constexpr auto error(std::string_view fmt, Args... args) -> void {} inline constexpr auto error(std::string_view fmt, Args... args) -> void {}
#endif #endif
/// JOURNAL_GLOG_COMPAT: enables LOG_F macro format which GLOG and Loguru use
/// for compatibility, on by default
#if defined(JOURNAL_GLOG_COMPAT)
#define LOG_F_TRACE(...) trace(__VA_ARGS__)
#define LOG_F_DEBUG(...) debug(__VA_ARGS__)
#define LOG_F_INFO(...) info(__VA_ARGS__)
#define LOG_F_WARN(...) warn(__VA_ARGS__)
#define LOG_F_ERROR(...) error(__VA_ARGS__)
#define LOG_F(V, ...) LOG_F_##V(__VA_ARGS__)
#endif
} // namespace journal } // namespace journal