diff --git a/src/logger.cpp b/src/logger.cpp index cfe8b5884522933eefc8ccad93ed158ffa4aea12..53e7567e0c5ce06b50f2bcc50374afb4d9f45f5e 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -585,10 +585,10 @@ Logger::vlog(int level, const char* file, int line, bool linefeed, const char* f } void -Logger::write(int level, const char* file, int line, std::string&& message) +Logger::write(int level, const char* file, int line, bool linefeed, std::string&& message) { /* Timestamp is generated here. */ - Msg msg(level, file, line, true, std::move(message)); + Msg msg(level, file, line, linefeed, std::move(message)); log_to_if_enabled(ConsoleLog::instance(), msg); log_to_if_enabled(SysLog::instance(), msg); diff --git a/src/logger.h b/src/logger.h index bda68a3863ea342083280ad78edd58ac24517205..46981a600490595e4d0d4d5995ee6ba94c446880 100644 --- a/src/logger.h +++ b/src/logger.h @@ -22,12 +22,14 @@ #include <fmt/core.h> #include <fmt/format.h> #include <fmt/chrono.h> +#include <fmt/compile.h> #include <fmt/printf.h> #if __has_include(<fmt/std.h>) #include <fmt/std.h> #else #include <fmt/ostream.h> #endif + #include <opendht/logger.h> #include <cinttypes> // for PRIx64 #include <cstdarg> @@ -117,10 +119,10 @@ public: } LIBJAMI_PUBLIC - static void write(int level, const char* file, int line, std::string&& message); + static void write(int level, const char* file, int line, bool linefeed, std::string&& message); static inline void writeDht(dht::log::LogLevel level, std::string&& message) { - write(dhtLevel(level), nullptr, 0, std::move(message)); + write(dhtLevel(level), nullptr, 0, true, std::move(message)); } static inline std::shared_ptr<dht::log::Logger> dhtLogger() { return std::make_shared<dht::Logger>(&Logger::writeDht); @@ -175,22 +177,36 @@ namespace log { template<typename S, typename... Args> void info(const char* file, int line, S&& format, Args&&... args) { - Logger::write(LOG_INFO, file, line, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); + Logger::write(LOG_INFO, file, line, true, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); } - template<typename S, typename... Args> void dbg(const char* file, int line, S&& format, Args&&... args) { - Logger::write(LOG_DEBUG, file, line, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); + Logger::write(LOG_DEBUG, file, line, true, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); } - template<typename S, typename... Args> void warn(const char* file, int line, S&& format, Args&&... args) { - Logger::write(LOG_WARNING, file, line, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); + Logger::write(LOG_WARNING, file, line, true, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); } - template<typename S, typename... Args> void error(const char* file, int line, S&& format, Args&&... args) { - Logger::write(LOG_ERR, file, line, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); + Logger::write(LOG_ERR, file, line, true, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); +} + +template<typename S, typename... Args> +void xinfo(const char* file, int line, S&& format, Args&&... args) { + Logger::write(LOG_INFO, file, line, false, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); +} +template<typename S, typename... Args> +void xdbg(const char* file, int line, S&& format, Args&&... args) { + Logger::write(LOG_DEBUG, file, line, false, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); +} +template<typename S, typename... Args> +void xwarn(const char* file, int line, S&& format, Args&&... args) { + Logger::write(LOG_WARNING, file, line, false, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); +} +template<typename S, typename... Args> +void xerror(const char* file, int line, S&& format, Args&&... args) { + Logger::write(LOG_ERR, file, line, false, fmt::format(std::forward<S>(format), std::forward<Args>(args)...)); } } @@ -201,10 +217,10 @@ void error(const char* file, int line, S&& format, Args&&... args) { #define JAMI_WARN(...) ::jami::Logger::log(LOG_WARNING, __FILE__, __LINE__, true, ##__VA_ARGS__) #define JAMI_ERR(...) ::jami::Logger::log(LOG_ERR, __FILE__, __LINE__, true, ##__VA_ARGS__) -#define JAMI_XINFO(...) ::jami::Logger::log(LOG_INFO, __FILE__, __LINE__, false, ##__VA_ARGS__) -#define JAMI_XDBG(...) ::jami::Logger::log(LOG_DEBUG, __FILE__, __LINE__, false, ##__VA_ARGS__) -#define JAMI_XWARN(...) ::jami::Logger::log(LOG_WARNING, __FILE__, __LINE__, false, ##__VA_ARGS__) -#define JAMI_XERR(...) ::jami::Logger::log(LOG_ERR, __FILE__, __LINE__, false, ##__VA_ARGS__) +#define JAMI_XINFO(formatstr, ...) ::jami::log::xinfo(__FILE__, __LINE__, FMT_COMPILE(formatstr), ##__VA_ARGS__) +#define JAMI_XDBG(formatstr, ...) ::jami::log::xdbg(__FILE__, __LINE__, FMT_COMPILE(formatstr), ##__VA_ARGS__) +#define JAMI_XWARN(formatstr, ...) ::jami::log::xwarn(__FILE__, __LINE__, FMT_COMPILE(formatstr), ##__VA_ARGS__) +#define JAMI_XERR(formatstr, ...) ::jami::log::xerror(__FILE__, __LINE__, FMT_COMPILE(formatstr), ##__VA_ARGS__) #define JAMI_LOG(formatstr, ...) ::jami::log::info(__FILE__, __LINE__, FMT_STRING(formatstr), ##__VA_ARGS__) #define JAMI_DEBUG(formatstr, ...) if(::jami::Logger::debugEnabled()) { ::jami::log::dbg(__FILE__, __LINE__, FMT_STRING(formatstr), ##__VA_ARGS__); } diff --git a/src/manager.cpp b/src/manager.cpp index 0f2feb42d1e59af379b49eefc55e52f62a8c7a45..7f4fb0c9a48e79c45faf9d809442341eb4290592 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -223,11 +223,11 @@ setSipLogLevel() pj_log_set_log_func([](int level, const char* data, int len) { auto msg = std::string_view(data, len); if (level < 2) - JAMI_ERROR("{}", msg); + JAMI_XERR("{}", msg); else if (level < 4) - JAMI_WARNING("{}", msg); + JAMI_XWARN("{}", msg); else - JAMI_LOG("{}", msg); + JAMI_XDBG("{}", msg); }); } @@ -247,7 +247,7 @@ setGnuTlsLogLevel() gnutls_global_set_log_level(level); gnutls_global_set_log_function([](int level, const char* msg) { - JAMI_XDBG("[%d]GnuTLS: %s", level, msg); + JAMI_XDBG("[{:d}]GnuTLS: {:s}", level, msg); }); }