9 #ifndef QICORE_LOG_HPP_
10 #define QICORE_LOG_HPP_
13 #include <qi/anyobject.hpp>
14 #include <qi/clock.hpp>
39 qi::LogLevel level = qi::LogLevel_Info;
44 qi::Clock::time_point
date;
49 inline bool toOld(std::map<std::string, ::qi::AnyValue>& fields,
50 const std::vector<std::tuple<std::string, qi::TypeInterface*>>& missing,
51 const std::map<std::string, ::qi::AnyReference>& dropfields)
57 if (dropfields.size() == 2)
61 if (systemDateIt != dropfields.end() && dateIt != dropfields.end())
63 const qi::SystemClock::time_point systemDate = systemDateIt->second.to<qi::SystemClock::time_point>();
65 qi::AnyValue(qi::os::timeval(systemDate.time_since_epoch()));
71 catch (
const std::exception& e)
73 qiLogVerbose(
"qi.core.LogMessage") <<
"Conversion error: " << e.what();
78 inline bool fromOld(std::map<std::string, ::qi::AnyValue>& fields,
79 const std::vector<std::tuple<std::string, qi::TypeInterface*>>& missing,
80 const std::map<std::string, ::qi::AnyReference>& dropfields)
84 if (dropfields.size() == 1)
87 if (dropfieldsIt != dropfields.end() && missing.size() == 2 &&
93 const qi::os::timeval timestamp = dropfieldsIt->second.to<qi::os::timeval>();
96 qi::SystemClock::time_point(qi::Seconds(timestamp.tv_sec) + qi::MicroSeconds(timestamp.tv_usec)));
101 catch (
const std::exception& e)
103 qiLogVerbose(
"qi.core.LogMessage") <<
"Conversion error: " << e.what();
111 #endif // !QICORE_LOG_HPP_
qi::Clock::time_point date
QI_TYPE_ENUM(ProgressNotifier::Status)
const char * LogMessage_timestamp()
QI_TYPE_STRUCT_EXTENSION_CONVERT_HANDLERS(::qi::LogMessage, fromOld, toOld)
const char * LogMessage_systemDate()
bool fromOld(std::map< std::string,::qi::AnyValue > &fields, const std::vector< std::tuple< std::string, qi::TypeInterface * >> &missing, const std::map< std::string,::qi::AnyReference > &dropfields)
const char * LogMessage_date()
qi::SystemClock::time_point systemDate
bool toOld(std::map< std::string,::qi::AnyValue > &fields, const std::vector< std::tuple< std::string, qi::TypeInterface * >> &missing, const std::map< std::string,::qi::AnyReference > &dropfields)
QI_TYPE_STRUCT(::qi::LogMessage, source, level, category, location, message, id, date, systemDate)