在 Boost.Log 这里提出的问题之后,使用文件名中的自定义属性或配置文件的目标值,我尝试开发建议的解决方案,但由于wchar_t
与char
,我在尝试设置文件名时遇到了 Windows 上的构建问题。
Error C2664 'boost::log::v2s_mt_nt6::basic_formatter<char>::result_type boost::log::v2s_mt_nt6::basic_formatter<char>::operator ()(const boost::log::v2s_mt_nt6::record_view &,boost::log::v2s_mt_nt6::basic_formatting_ostream<char,std::char_traits<char>,std::allocator<char>> &) const': cannot convert argument 2 from 'boost::log::v2s_mt_nt6::sinks::file::file_name_composer_adapter<boost::log::v2s_mt_nt6::basic_formatter<char>>::stream_type' to 'boost::log::v2s_mt_nt6::basic_formatting_ostream<char,std::char_traits<char>,std::allocator<char>> &'
file: boostlogsinkstext_multifile_backend.hpp 107
stream_type being ostream of wchar_t due to Windows
if (boost::optional< std::string > param = settings["FileName"]) {
auto fmt = logging::parse_formatter((*param));
auto composer = sinks::file::as_file_name_composer(fmt);
backend->set_file_name_composer(composer);
}
如何使parse_formatter与wchar_t配合使用?
我还尝试使用 wchar_t 作为 sink_factory + std::wstring 的类型,但它也没有构建
Error C2664 'boost::log::v2s_mt_nt6::basic_formatter<wchar_t>::result_type boost::log::v2s_mt_nt6::basic_formatter<wchar_t>::operator ()(const boost::log::v2s_mt_nt6::record_view &,boost::log::v2s_mt_nt6::basic_formatting_ostream<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>> &) const': cannot convert argument 2 from 'boost::log::v2s_mt_nt6::expressions::aux::stream_ref<boost::log::v2s_mt_nt6::basic_formatting_ostream<char,std::char_traits<char>,std::allocator<char>>>' to 'boost::log::v2s_mt_nt6::basic_formatting_ostream<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>> &'
file: boostlogdetaillight_function.hpp 362
向作曲家提供'std::locale("en_US.UTF-8")'
不会改变任何东西,因为它是运行时
与格式化程序相同的评论"expr::stream << expr::format(*param)"
我正在使用boost_1_70_0
你知道任何解决方案吗?
谢谢!
parse_formatter
返回basic_formatter<CharT>
,其中CharT
是从输入参数推导出的字符类型。因此,您需要通过std::wstring
才能获得可以与as_file_name_composer
一起使用的wformatter
。
为了从设置中获取std::wstring
参数值,您必须使用wsettings
,如果将std::wistream
作为输入传递,则可以从parse_settings
获取。