Reverted const qualifier to log_msg& args, fixed issue #849, and added counter tests
This commit is contained in:
		@@ -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(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 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
 | 
				
			|||||||
    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
 | 
				
			|||||||
// 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
 | 
				
			|||||||
#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:
 | 
				
			|||||||
    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:
 | 
				
			|||||||
    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 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#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]")
 | 
				
			|||||||
    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));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user