25 using ptr = std::shared_ptr<FormatItem>;
87 localtime_r(&msg.
_ctime, &st);
89 strftime(tmp, 31,
_time_fmt.c_str(), &st);
238 using ptr = std::shared_ptr<Formatter>;
253 Formatter(
const std::string &pattern =
"[%d{%y-%m-%d|%H:%M:%S}][%t][%c][%f:%l][%p]%T%m%n")
265 std::stringstream ss;
278 item->format(out, msg);
303 std::vector<std::pair<std::string, std::string>> fmt_order;
305 std::string key, val;
322 if (val.empty() ==
false)
324 fmt_order.push_back(std::make_pair(
"", val));
330 std::cout <<
"%后没有有效字符" << std::endl;
344 std::cout <<
"规则中{}匹配出错" << std::endl;
349 fmt_order.push_back(std::make_pair(key, val));
356 for (
auto &it : fmt_order)
371 return std::make_shared<TimeFormatItem>(value);
373 return std::make_shared<ThreadFormatItem>();
375 return std::make_shared<LoggerFormatItem>();
377 return std::make_shared<FileFormatItem>();
379 return std::make_shared<LineFormatItem>();
381 return std::make_shared<LevelFormatItem>();
383 return std::make_shared<TabFormatItem>();
385 return std::make_shared<MsgFormatItem>();
387 return std::make_shared<NLineFormatItem>();
389 return std::make_shared<OtherFormatItem>(value);
390 std::cout <<
"没有对应的格式化字符:'%" << key <<
"'\n";
static const char * toString(LogLevel::value level)
将日志等级转换为对应的字符串
Definition level.hpp:44
日志消息结构体
Definition message.hpp:24
size_t _line
行号
Definition message.hpp:26
std::string _payload
有效载荷数据
Definition message.hpp:31
time_t _ctime
日志产生的时间戳
Definition message.hpp:25
std::string _file
源文件名称
Definition message.hpp:29
std::string _logger
日志器
Definition message.hpp:30
std::thread::id _tid
线程ID
Definition message.hpp:27
LogLevel::value _level
日志等级
Definition message.hpp:28