ClickHouse
40 строк · 989.0 Байт
1#include "ExtendedLogChannel.h"
2
3#include <sys/time.h>
4#include <Common/CurrentThread.h>
5#include <Common/Exception.h>
6#include <base/getThreadId.h>
7
8
9namespace DB
10{
11namespace ErrorCodes
12{
13extern const int CANNOT_GETTIMEOFDAY;
14}
15
16ExtendedLogMessage ExtendedLogMessage::getFrom(const Poco::Message & base)
17{
18ExtendedLogMessage msg_ext(base);
19
20::timeval tv;
21if (0 != gettimeofday(&tv, nullptr))
22throw ErrnoException(ErrorCodes::CANNOT_GETTIMEOFDAY, "Cannot gettimeofday");
23
24msg_ext.time_seconds = static_cast<UInt32>(tv.tv_sec);
25msg_ext.time_microseconds = static_cast<UInt32>(tv.tv_usec);
26msg_ext.time_in_microseconds = static_cast<UInt64>((tv.tv_sec) * 1000000U + (tv.tv_usec));
27
28if (current_thread)
29{
30auto query_id_ref = CurrentThread::getQueryId();
31if (!query_id_ref.empty())
32msg_ext.query_id.assign(query_id_ref.data(), query_id_ref.size());
33}
34
35msg_ext.thread_id = getThreadId();
36
37return msg_ext;
38}
39
40}
41