本文介绍了Boost Log 2.0:日志中的严重级别为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我使用的是 Boost-Log 2.0,它与版本 1 有一些不同,我很难输出严重性"属性.I'm using Boost-Log 2.0, which has some differences from version 1, and I have a hard time outputting the "Severity" attribute.我正在使用Boost.Format-style"格式化程序I'm using the "Boost.Format-style" formatters"%TimeStamp% [%Uptime%] (%LineID%) <%Severity%>: %Message%"TimeStamp、LineID 和 Message 是 common_attributes.Uptime 是我使用 attrs::timer() 添加的属性.我认为在使用 severity_logger 时会自动添加 Severity,但显然不是,这是我的问题.我得到空的严重性,例如:TimeStamp, LineID, and Message are common_attributes. Uptime is an attribute I added using attrs::timer(). I thought that Severity was automatically added when using severity_logger, but apparently it isn't and that's my problem. I get empty severities, eg:2013-Apr-06 19:21:52.408974 [00:00:00.001337] (3) <>: A warning severity message注意空的 .我尝试使用 register_simple_formatter_factory 添加严重性,但随后出现编译器错误:Notice the empty <>. I've tried to add severity using register_simple_formatter_factory but then I get the compiler error :error: no matching function for call to ‘register_simple_formatter_factory(const char [9])’我不明白为什么.这是我的代码:#include <iostream>#include <boost/log/common.hpp>#include <boost/log/core.hpp>#include <boost/log/trivial.hpp>#include <boost/log/expressions.hpp>#include <boost/log/sinks/text_file_backend.hpp>#include <boost/log/sinks/sync_frontend.hpp>#include <boost/log/sinks/text_ostream_backend.hpp>#include <boost/log/utility/setup/file.hpp>#include <boost/log/utility/setup/common_attributes.hpp>#include <boost/log/utility/setup/formatter_parser.hpp>#include <boost/log/sources/severity_logger.hpp>#include <boost/log/sources/severity_feature.hpp>#include <boost/log/sources/record_ostream.hpp>#include <boost/log/attributes.hpp>using namespace std;namespace logging = boost::log;namespace expr = boost::log::expressions;namespace attrs = boost::log::attributes;namespace src = boost::log::sources;namespace keywords = boost::log::keywords;enum severity_level{ DEBUG, INFO, WARNING, ERROR, CRITICAL};BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT(my_logger, src::severity_logger_mt< severity_level> )// The formatting logic for the severity leveltemplate< typename CharT, typename TraitsT >inline std::basic_ostream< CharT, TraitsT >& operator<< ( std::basic_ostream< CharT, TraitsT >& strm, severity_level lvl){ static const char* const str[] = { "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL" }; if (static_cast< std::size_t >(lvl) < (sizeof(str) / sizeof(*str))) strm << str[lvl]; else strm << static_cast< int >(lvl); return strm;}void init() { // logging::register_simple_formatter_factory< severity_level >("Severity"); logging::add_file_log( keywords::file_name = "blop.log", keywords::auto_flush = true, keywords::open_mode = (std::ios::out | std::ios::app), keywords::format = "%TimeStamp% [%Uptime%] (%LineID%) <%Severity%>: %Message%" ); logging::add_common_attributes(); logging::core::get()->add_global_attribute("Uptime", attrs::timer());}int main(int argc, const char *argv[]) { init(); src::severity_logger_mt< severity_level > lg = my_logger::get(); BOOST_LOG_SEV(lg, DEBUG) << "A debug severity message"; BOOST_LOG_SEV(lg, INFO) << "An informational severity message"; BOOST_LOG_SEV(lg, WARNING) << "A warning severity message"; BOOST_LOG_SEV(lg, ERROR) << "An error severity message"; BOOST_LOG_SEV(lg, CRITICAL) << "A critical severity message"; return 0;}注意注释掉的行:// logging::register_simple_formatter_factory< severity_level >("Severity");产生上述错误.我编译它:g++ main.cpp -Wall -DBOOST_ALL_DYN_LINK -lboost_system -lboost_log_setup -lboost_log -lboost_filesystem -lboost_date_time -lboost_thread -o main推荐答案遇到同样的问题(日志文件中为空白 %Severity% 并且在尝试添加注册函数时出现相同的编译器错误).我发现对 register_simple_formatter_factory 的调用应该是:Ran into the same problem (blank %Severity% in the log file AND the same compiler error when trying to add the register function).I found that the call to register_simple_formatter_factory should be:boost::log::register_simple_formatter_factory< boost::log::trivial::severity_level, char >("Severity"); 这篇关于Boost Log 2.0:日志中的严重级别为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-05 00:31