pattern_formatter &operator=(constpattern_formatter &other) = delete;// 实现父类pure virtual函数, 克隆对象std::unique_ptr<formatter>clone()constoverride;voidformat(constdetails::log_msg &msg,memory_buf_t&dest)override;// 添加模式标志flagtemplate<typename T, typename... Args> pattern_formatter &...
pattern_formatter 里提供了一组格式化器formatters_每个格式化器都继承基类flag_formatter实现特定的格式化功能。spdlog 提供的格式化器主要有: level_formatter(输出日志级别) short_level_formatter(输出日志级别的缩写) datetime_formatter(输出日期和时间) message_formatter(输出日志消息) color_start_formatter和color_stop...
Logger(日志记录器):负责接收和管理日志消息。 Sink(输出目标):负责将日志消息写入指定的输出设备(文件、控制台等)。 Pattern Formatter(日志格式化器):定义日志消息的格式。 Async Logging(异步日志):提供异步日志记录以提高性能。 Log Level(日志级别):控制日志记录的细节和过滤不必要的日志。 Thread Safety(线程安全...
class name_formatter final : public flag_formatter { public: explicit name_formatter(padding_info padinfo) : flag_formatter(padinfo) {}void format(const details::log_msg &msg, const std::tm &, memory_buf_t &dest) override { ScopedPadder p(msg.logger_name.size(), padinfo_, dest); ...
class SPDLOG_API custom_flag_formatter : public details::flag_formatter { public: virtual std::unique_ptr<custom_flag_formatter> clone() const = 0; void set_padding_info(const details::padding_info &padding) { flag_formatter::padinfo_ = padding; } }; class SPDLOG_API pattern_formatter fi...
这段代码是SPDLOG日志库的源代码的一部分,具体是格式化日志消息的pattern_formatter类的成员函数handle_flag_。 具体的源码如下:路径为:usr->local->include->spdlog->pattern_formatter-inl.h->{}spdlog->handle_flag_(char,detailspadding info) template<typename Padder>SPDLOG_INLINE void pattern_formatter::hand...
已经有了用于接收前端用户log消息的类logger,代表log消息的类是log_msg,后端写log消息到目标文件的类sink,格式化log消息为最终字符串的类formatter,解析pattern flag的类pattern_formatter等等。但似乎还存在一个问题:库的使用者,如何使用它们? 每次使用时,可能需要先创建logger对象,然后通过logger对象来接收用户log消息。
SPDLOG_INLINE void logger::set_pattern(std::string pattern, pattern_time_type time_type) { auto new_formatter = details::make_unique<pattern_formatter>(std::move(pattern), time_type); set_formatter(std::move(new_formatter)); } // set formatting for the sinks in this logger. ...
只包含头文件 (spdlog/spdlog.h —> spdlog , spdlog/fmt/bundled/format.h —> pattern_formatter) 无需依赖第三方库 支持跨平台 –Linux/Windowson 32/64 bits 可每日生成日志文件daily_file_sink 每天定时产生文件日志 支持控制台日志输出 可选的异步日志 ...
logger->set_pattern("***[%H:%M:%S %z][thread %t] %v***");• 1 这一行就是配置格式化打印,配置方法可以参考文档中的表格: 配置输出位置sink & 配置格式化打印(sink层面) class my_formatter_flag : public spdlog::custom_flag_formatter{public:void format(const spdlog::details::log_msg &, ...