C++ 提升日志位置(索引)格式对齐
c++ boost log positional(indexed) format alignment
>我尝试格式化提升日志输出,以便出于输出日志对齐原因,所选字段将始终具有特定宽度。
add_file_log(
keywords::file_name = s.str(),
keywords::rotation_size = log_info.log_file_size,
keywords::max_size = log_info.log_file_amount * log_info.log_file_size,
keywords::target = log_info.log_path,
keywords::open_mode = std::ios::out | std::ios::app,
keywords::auto_flush = true,
keywords::format =
expressions::format("[%1%] [%2%] [%3%] [%4%] %5%")
% expressions::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f")
% expressions::attr<unsigned int>("ThreadID")
% expressions::attr<string>("Scope")
% trivial::severity
% expressions::smessage
);
我尝试了不同的格式,例如
- "[%1%] [%2%] [%3%]
- [%|20t|%4%] %5%" "[%1%] [%2%] [%3%]
- [%-20s] %5%"
- 琐碎::严重性 <<标准::设置(20)
我的许多尝试都抛出了以下错误:
> Caught Exception in cyacollector main. Error: Unsupported format
> placeholder
目前,Boost.Log 中的 expressions::format
仅支持%N%
形式的位置占位符。此格式不允许使用其他参数,例如宽度或精度。大多数情况下,这是因为此格式化程序将已格式化的字符串插入到格式模板中,因此此时无法应用大多数参数。
但是,您可以通过将参数修改为format
来实现所需的目标。您可以使用max_size_decor
装饰器和std::setw
操纵器的组合来实现日志输出中每个列的固定宽度的效果。
add_file_log(
...,
keywords::format =
expressions::format("[%1%] [%2%] [%3%] [%4%] %5%")
% expressions::max_size_decor< char >(30)[ expressions::stream << std::setw(30) << expressions::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f") ]
% expressions::max_size_decor< char >(10)[ expressions::stream << std::setw(10) << expressions::attr<unsigned int>("ThreadID") ]
% expressions::max_size_decor< char >(20)[ expressions::stream << std::setw(20) << expressions::attr<string>("Scope") ]
% expressions::max_size_decor< char >(5)[ expressions::stream << std::setw(5) << trivial::severity ]
% expressions::smessage
);
相关文章:
- 数组索引的值没有增加
- 如何在openssl-ecc中获取十六进制格式的私钥
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 查找最接近的大于当前数字的数字的索引
- TDateTime格式在C++Builder中不会更改
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 检查不带转换的扫描格式
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 是否可以从格式字符串中检索"width"
- clang格式:宏的缩进
- clang格式:禁用排序包含
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 将RGB图像保存为PPM格式
- C++ 提升日志位置(索引)格式对齐