Commit 36112371 authored by gabime's avatar gabime

Reverted const qualifier to log_msg& args, fixed issue #849, and added counter tests

parent 2fa53877
...@@ -58,7 +58,7 @@ public: ...@@ -58,7 +58,7 @@ public:
std::shared_ptr<logger> clone(std::string new_name) override; std::shared_ptr<logger> clone(std::string new_name) override;
protected: protected:
void sink_it_(const details::log_msg &msg) override; void sink_it_(details::log_msg &msg) override;
void flush_() override; void flush_() override;
void backend_log_(const details::log_msg &incoming_log_msg); void backend_log_(const details::log_msg &incoming_log_msg);
......
...@@ -36,14 +36,14 @@ inline spdlog::async_logger::async_logger( ...@@ -36,14 +36,14 @@ inline spdlog::async_logger::async_logger(
} }
// send the log message to the thread pool // send the log message to the thread pool
inline void spdlog::async_logger::sink_it_(const details::log_msg &msg) inline void spdlog::async_logger::sink_it_(details::log_msg &msg)
{ {
#if defined(SPDLOG_ENABLE_MESSAGE_COUNTER) #if defined(SPDLOG_ENABLE_MESSAGE_COUNTER)
incr_msg_counter_(msg); incr_msg_counter_(msg);
#endif #endif
if (auto pool_ptr = thread_pool_.lock()) if (auto pool_ptr = thread_pool_.lock())
{ {
pool_ptr->post_log(shared_from_this(), msg, overflow_policy_); pool_ptr->post_log(shared_from_this(), std::move(msg), overflow_policy_);
} }
else else
{ {
......
...@@ -39,8 +39,9 @@ struct log_msg ...@@ -39,8 +39,9 @@ struct log_msg
log_clock::time_point time; log_clock::time_point time;
size_t thread_id; size_t thread_id;
fmt::memory_buffer raw; fmt::memory_buffer raw;
mutable size_t msg_id{0}; size_t msg_id{0};
// info about wrapping the formatted text with color
// info about wrapping the formatted text with color (updated by pattern_formatter).
mutable size_t color_range_start{0}; mutable size_t color_range_start{0};
mutable size_t color_range_end{0}; mutable size_t color_range_end{0};
}; };
......
...@@ -317,7 +317,7 @@ inline bool spdlog::logger::should_log(spdlog::level::level_enum msg_level) cons ...@@ -317,7 +317,7 @@ inline bool spdlog::logger::should_log(spdlog::level::level_enum msg_level) cons
// protected virtual called at end of each user log call (if enabled) by the // protected virtual called at end of each user log call (if enabled) by the
// line_logger // line_logger
// //
inline void spdlog::logger::sink_it_(const details::log_msg &msg) inline void spdlog::logger::sink_it_(details::log_msg &msg)
{ {
#if defined(SPDLOG_ENABLE_MESSAGE_COUNTER) #if defined(SPDLOG_ENABLE_MESSAGE_COUNTER)
incr_msg_counter_(msg); incr_msg_counter_(msg);
......
...@@ -69,7 +69,7 @@ struct async_msg ...@@ -69,7 +69,7 @@ struct async_msg
#endif #endif
// construct from log_msg with given type // construct from log_msg with given type
async_msg(async_logger_ptr &&worker, async_msg_type the_type, const details::log_msg &m) async_msg(async_logger_ptr &&worker, async_msg_type the_type, details::log_msg &&m)
: msg_type(the_type) : msg_type(the_type)
, level(m.level) , level(m.level)
, time(m.time) , time(m.time)
...@@ -149,9 +149,9 @@ public: ...@@ -149,9 +149,9 @@ public:
thread_pool(const thread_pool &) = delete; thread_pool(const thread_pool &) = delete;
thread_pool &operator=(thread_pool &&) = delete; thread_pool &operator=(thread_pool &&) = delete;
void post_log(async_logger_ptr &&worker_ptr, const details::log_msg &msg, async_overflow_policy overflow_policy) void post_log(async_logger_ptr &&worker_ptr, details::log_msg &&msg, async_overflow_policy overflow_policy)
{ {
async_msg async_m(std::forward<async_logger_ptr>(worker_ptr), async_msg_type::log, msg); async_msg async_m(std::forward<async_logger_ptr>(worker_ptr), async_msg_type::log, std::forward<log_msg>(msg));
post_async_msg_(std::move(async_m), overflow_policy); post_async_msg_(std::move(async_m), overflow_policy);
} }
......
...@@ -142,7 +142,7 @@ public: ...@@ -142,7 +142,7 @@ public:
virtual std::shared_ptr<logger> clone(std::string logger_name); virtual std::shared_ptr<logger> clone(std::string logger_name);
protected: protected:
virtual void sink_it_(const details::log_msg &msg); virtual void sink_it_(details::log_msg &msg);
virtual void flush_(); virtual void flush_();
bool should_flush_(const details::log_msg &msg); bool should_flush_(const details::log_msg &msg);
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#define SPDLOG_TRACE_ON #define SPDLOG_TRACE_ON
#define SPDLOG_DEBUG_ON #define SPDLOG_DEBUG_ON
#define SPDLOG_ENABLE_MESSAGE_COUNTER
#include "spdlog/async.h" #include "spdlog/async.h"
#include "spdlog/sinks/basic_file_sink.h" #include "spdlog/sinks/basic_file_sink.h"
......
...@@ -175,3 +175,19 @@ TEST_CASE("to_hex_no_delimiter", "[to_hex]") ...@@ -175,3 +175,19 @@ TEST_CASE("to_hex_no_delimiter", "[to_hex]")
auto output = oss.str(); auto output = oss.str();
REQUIRE(ends_with(output, "0000: 090A0B0CFFFF" + std::string(spdlog::details::os::default_eol))); REQUIRE(ends_with(output, "0000: 090A0B0CFFFF" + std::string(spdlog::details::os::default_eol)));
} }
TEST_CASE("message_counter", "[message_counter]")
{
std::ostringstream oss;
auto oss_sink = std::make_shared<spdlog::sinks::ostream_sink_mt>(oss);
spdlog::logger oss_logger("oss", oss_sink);
oss_logger.set_pattern("%i %v");
oss_logger.info("Hello");
REQUIRE(oss.str() == "000001 Hello" + std::string(spdlog::details::os::default_eol));
oss.str("");
oss_logger.info("Hello again");
REQUIRE(oss.str() == "000002 Hello again" + std::string(spdlog::details::os::default_eol));
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment