2018-06-15 17:32:35 +00:00
|
|
|
#pragma once
|
2019-06-14 14:00:37 +00:00
|
|
|
#include <string>
|
2018-06-15 17:32:35 +00:00
|
|
|
|
2019-06-14 14:00:37 +00:00
|
|
|
namespace Poco
|
|
|
|
{
|
|
|
|
class Message;
|
|
|
|
}
|
2018-06-15 17:32:35 +00:00
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
|
|
|
/// Poco::Message with more ClickHouse-specific info
|
|
|
|
/// NOTE: Poco::Message is not polymorphic class, so we can't use inheritance in couple with dynamic_cast<>()
|
|
|
|
class ExtendedLogMessage
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
explicit ExtendedLogMessage(const Poco::Message & base) : base(base) {}
|
|
|
|
|
|
|
|
/// Attach additional data to the message
|
|
|
|
static ExtendedLogMessage getFrom(const Poco::Message & base);
|
|
|
|
|
|
|
|
// Do not copy for efficiency reasons
|
|
|
|
const Poco::Message & base;
|
|
|
|
|
2019-06-14 14:00:37 +00:00
|
|
|
uint32_t time_seconds = 0;
|
|
|
|
uint32_t time_microseconds = 0;
|
2018-06-15 17:32:35 +00:00
|
|
|
|
2019-06-14 14:00:37 +00:00
|
|
|
uint32_t thread_number = 0;
|
2018-06-15 17:32:35 +00:00
|
|
|
std::string query_id;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/// Interface extension of Poco::Channel
|
|
|
|
class ExtendedLogChannel
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual void logExtended(const ExtendedLogMessage & msg) = 0;
|
|
|
|
virtual ~ExtendedLogChannel() = default;
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|