9 #include "quill/bundled/fmt/base.h" 10 #include "quill/core/Attributes.h" 11 #include "quill/core/Filesystem.h" 12 #include "quill/core/LogLevel.h" 13 #include "quill/core/MacroMetadata.h" 14 #include "quill/sinks/FileSink.h" 15 #include "quill/sinks/StreamSink.h" 17 #include "quill/bundled/fmt/format.h" 22 #include <string_view> 30 template <
typename TBase>
34 using base_type = TBase;
37 using base_type::base_type;
58 std::string_view thread_id, std::string_view thread_name,
59 std::string
const& process_id, std::string_view logger_name,
60 LogLevel log_level, std::string_view log_level_description,
61 std::string_view log_level_short_code,
62 std::vector<std::pair<std::string, std::string>>
const* named_args,
63 std::string_view log_message, std::string_view log_statement)
override 65 char const* message_format = log_metadata->message_format();
67 if (strchr(log_metadata->message_format(),
'\n') !=
nullptr)
70 _format = log_metadata->message_format();
72 for (
size_t pos = 0; (pos = _format.find(
'\n', pos)) != std::string::npos; pos++)
74 _format.replace(pos, 1,
" ");
78 message_format = _format.data();
81 _json_message.clear();
84 logger_name, log_level, log_level_description, log_level_short_code,
85 named_args, log_message, log_statement, message_format);
87 _json_message.append(std::string_view{
"}\n"});
89 StreamSink::write_log(log_metadata, log_timestamp, thread_id, thread_name, process_id, logger_name, log_level,
90 log_level_description, log_level_short_code, named_args, std::string_view{},
91 std::string_view{_json_message.data(), _json_message.size()});
104 MacroMetadata const* log_metadata, uint64_t log_timestamp, std::string_view thread_id,
105 std::string_view , std::string
const& ,
106 std::string_view logger_name, LogLevel ,
107 std::string_view log_level_description, std::string_view ,
108 std::vector<std::pair<std::string, std::string>>
const* named_args,
109 std::string_view , std::string_view ,
char const* message_format)
111 _json_message.append(fmtquill::format(
112 R
"({{"timestamp":"{}","file_name":"{}","line":"{}","thread_id":"{}","logger":"{}","log_level":"{}","message":"{}")", 113 std::to_string(log_timestamp), log_metadata->file_name(), log_metadata->line(), thread_id, 114 logger_name, log_level_description, message_format)); 119 for (
auto const& [key,
value] : *named_args)
121 _json_message.append(std::string_view{
",\""});
122 _json_message.append(key);
123 _json_message.append(std::string_view{
"\":\""});
124 _json_message.append(
value);
125 _json_message.append(std::string_view{
"\""});
131 fmtquill::memory_buffer _json_message;
145 std::move(file_event_notifier), do_fopen)
QUILL_ATTRIBUTE_HOT void write_log(MacroMetadata const *, uint64_t, std::string_view, std::string_view, std::string const &, std::string_view, LogLevel, std::string_view, std::string_view, std::vector< std::pair< std::string, std::string >> const *, std::string_view, std::string_view log_statement) override
Writes a formatted log message to the stream.
Definition: StreamSink.h:133
Definition: JsonSink.h:31
QUILL_ATTRIBUTE_HOT void write_log(MacroMetadata const *log_metadata, uint64_t log_timestamp, std::string_view thread_id, std::string_view thread_name, std::string const &process_id, std::string_view logger_name, LogLevel log_level, std::string_view log_level_description, std::string_view log_level_short_code, std::vector< std::pair< std::string, std::string >> const *named_args, std::string_view log_message, std::string_view log_statement) override
Logs a formatted log message to the sink.
Definition: JsonSink.h:57
JSON File Sink.
Definition: JsonSink.h:139
Setups a signal handler to handle fatal signals.
Definition: BackendManager.h:24
JSON Console Sink.
Definition: JsonSink.h:155
The FileSinkConfig class holds the configuration options for the FileSink.
Definition: FileSink.h:57
Notifies on file events by calling the appropriate callback, the callback is executed on the backend ...
Definition: StreamSink.h:36
virtual QUILL_ATTRIBUTE_HOT void generate_json_message(MacroMetadata const *log_metadata, uint64_t log_timestamp, std::string_view thread_id, std::string_view, std::string const &, std::string_view logger_name, LogLevel, std::string_view log_level_description, std::string_view, std::vector< std::pair< std::string, std::string >> const *named_args, std::string_view, std::string_view, char const *message_format)
Generates a JSON-formatted log message.
Definition: JsonSink.h:103