mirror of
https://github.com/gabime/spdlog.git
synced 2024-12-26 10:31:34 +08:00
Fixed thread id bug in async mode by passing thread id in log_msg struct
This commit is contained in:
parent
69d71c52a1
commit
acb06ea977
@ -60,6 +60,7 @@ class async_log_helper
|
|||||||
level::level_enum level;
|
level::level_enum level;
|
||||||
log_clock::time_point time;
|
log_clock::time_point time;
|
||||||
std::string txt;
|
std::string txt;
|
||||||
|
std::thread::id thread_id;
|
||||||
|
|
||||||
async_msg() = default;
|
async_msg() = default;
|
||||||
~async_msg() = default;
|
~async_msg() = default;
|
||||||
@ -99,6 +100,7 @@ async_msg(async_msg&& other) SPDLOG_NOEXCEPT:
|
|||||||
msg.logger_name = logger_name;
|
msg.logger_name = logger_name;
|
||||||
msg.level = level;
|
msg.level = level;
|
||||||
msg.time = time;
|
msg.time = time;
|
||||||
|
msg.thread_id = thread_id;
|
||||||
msg.raw << txt;
|
msg.raw << txt;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include "../common.h"
|
#include "../common.h"
|
||||||
#include "../logger.h"
|
#include "../logger.h"
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
// Line logger class - aggregates operator<< calls to fast ostream
|
// Line logger class - aggregates operator<< calls to fast ostream
|
||||||
// and logs upon destruction
|
// and logs upon destruction
|
||||||
@ -65,6 +65,7 @@ public:
|
|||||||
{
|
{
|
||||||
_log_msg.logger_name = _callback_logger->name();
|
_log_msg.logger_name = _callback_logger->name();
|
||||||
_log_msg.time = os::now();
|
_log_msg.time = os::now();
|
||||||
|
_log_msg.thread_id = std::this_thread::get_id();
|
||||||
_callback_logger->_log_msg(_log_msg);
|
_callback_logger->_log_msg(_log_msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <thread>
|
||||||
#include "../common.h"
|
#include "../common.h"
|
||||||
#include "./format.h"
|
#include "./format.h"
|
||||||
|
|
||||||
@ -38,6 +39,7 @@ struct log_msg
|
|||||||
logger_name(),
|
logger_name(),
|
||||||
level(l),
|
level(l),
|
||||||
time(),
|
time(),
|
||||||
|
thread_id(),
|
||||||
raw(),
|
raw(),
|
||||||
formatted() {}
|
formatted() {}
|
||||||
|
|
||||||
@ -45,7 +47,8 @@ struct log_msg
|
|||||||
log_msg(const log_msg& other) :
|
log_msg(const log_msg& other) :
|
||||||
logger_name(other.logger_name),
|
logger_name(other.logger_name),
|
||||||
level(other.level),
|
level(other.level),
|
||||||
time(other.time)
|
time(other.time),
|
||||||
|
thread_id(other.thread_id)
|
||||||
{
|
{
|
||||||
if (other.raw.size())
|
if (other.raw.size())
|
||||||
raw << fmt::BasicStringRef<char>(other.raw.data(), other.raw.size());
|
raw << fmt::BasicStringRef<char>(other.raw.data(), other.raw.size());
|
||||||
@ -57,6 +60,7 @@ struct log_msg
|
|||||||
logger_name(std::move(other.logger_name)),
|
logger_name(std::move(other.logger_name)),
|
||||||
level(other.level),
|
level(other.level),
|
||||||
time(std::move(other.time)),
|
time(std::move(other.time)),
|
||||||
|
thread_id(other.thread_id),
|
||||||
raw(std::move(other.raw)),
|
raw(std::move(other.raw)),
|
||||||
formatted(std::move(other.formatted))
|
formatted(std::move(other.formatted))
|
||||||
{
|
{
|
||||||
@ -71,6 +75,7 @@ struct log_msg
|
|||||||
logger_name = std::move(other.logger_name);
|
logger_name = std::move(other.logger_name);
|
||||||
level = other.level;
|
level = other.level;
|
||||||
time = std::move(other.time);
|
time = std::move(other.time);
|
||||||
|
thread_id = other.thread_id;
|
||||||
raw = std::move(other.raw);
|
raw = std::move(other.raw);
|
||||||
formatted = std::move(other.formatted);
|
formatted = std::move(other.formatted);
|
||||||
other.clear();
|
other.clear();
|
||||||
@ -87,6 +92,7 @@ struct log_msg
|
|||||||
std::string logger_name;
|
std::string logger_name;
|
||||||
level::level_enum level;
|
level::level_enum level;
|
||||||
log_clock::time_point time;
|
log_clock::time_point time;
|
||||||
|
std::thread::id thread_id;
|
||||||
fmt::MemoryWriter raw;
|
fmt::MemoryWriter raw;
|
||||||
fmt::MemoryWriter formatted;
|
fmt::MemoryWriter formatted;
|
||||||
};
|
};
|
||||||
|
@ -354,7 +354,7 @@ class t_formatter :public flag_formatter
|
|||||||
{
|
{
|
||||||
void format(details::log_msg& msg, const std::tm&) override
|
void format(details::log_msg& msg, const std::tm&) override
|
||||||
{
|
{
|
||||||
msg.formatted << std::hash<std::thread::id>()(std::this_thread::get_id());
|
msg.formatted << std::hash<std::thread::id>()(msg.thread_id);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user