8#include <source_location>
55 std::chrono::time_point<std::chrono::steady_clock>
creationTS;
58 std::string
toJson(std::string_view delim)
60 auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(
65 "{{\n\"message\": \"{}\",\n\"sourceLocation\": \"{}:{}\",\n\"timeStarted\": "
66 "\"{}\",\n\"duration\": \"{}\"\n}}{}",
79void logImpl(std::string sv,
Level level, std::string logName =
"NeoN");
82template<
typename... Args>
83void info(std::string formatString, Args... args)
89template<
typename... Args>
90void warn(std::string formatString, Args... args)
111 virtual void log(std::string)
const = 0;
117inline void log(std::shared_ptr<BaseLogger> logger,
LogEvent& event, std::string_view delim =
",")
119 if (logger !=
nullptr)
122 auto formattedMessage =
123 logger->getTarget() ==
Target::Console ?
event.message :
event.toJson(delim);
125 logger->log(formattedMessage);
141 void log(std::string sv)
const override;
157 std::shared_ptr<BaseLogger> logger_;
161 void setLogger(
const std::shared_ptr<BaseLogger> logger);
166template<
typename CallClass>
167void setLogger(CallClass& cls, std::shared_ptr<BaseLogger> logger)
169 cls.setLogger(logger);
virtual ~BaseLogger()=default
BaseLogger(Target target)
virtual void log(std::string) const =0
std::string toJson(std::string_view delim)
std::source_location location
std::chrono::time_point< std::chrono::steady_clock > creationTS
LogEvent(std::source_location location, Level level, std::string_view message)
Logger(std::string name, Level level, Target target)
void log(std::string sv) const override
void setLogger(const std::shared_ptr< BaseLogger > logger)
std::shared_ptr< const BaseLogger > getLogger() const
void setLogger(CallClass &cls, std::shared_ptr< BaseLogger > logger)
void log(std::shared_ptr< BaseLogger > logger, LogEvent &event, std::string_view delim=",")
void setNeonDefaultPattern()
void info(std::string formatString, Args... args)
void warn(std::string formatString, Args... args)
void logImpl(std::string sv, Level level, std::string logName="NeoN")
const std::string & name(const NeoN::Document &doc)
Retrieves the name of a Document.