首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost日志不写文件,怎么写?

Boost日志不写文件,怎么写?
EN

Stack Overflow用户
提问于 2015-10-02 12:43:16
回答 2查看 1.8K关注 0票数 1

这是我的代码:

代码语言:javascript
复制
#include <boost/log/trivial.hpp>
#include <boost/move/utility.hpp>
#include <boost/log/sources/logger.hpp>
#include <boost/log/sources/record_ostream.hpp>
#include <boost/log/sources/global_logger_storage.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>

namespace logging = boost::log;
namespace src = boost::log::sources;
namespace keywords = boost::log::keywords;

BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT(my_logger, src::logger_mt)

void Foo::Some()
{
  std::cout << "TEST";

  src::logger_mt& lg = my_logger::get();

  logging::add_file_log("F:\\sample.log");
  //logging::core::get()->set_filter
  //  (
  //  logging::trivial::severity >= logging::trivial::info
  //  );
  logging::add_common_attributes();

  BOOST_LOG(lg) << "Greetings from the global logger!";

它取自boost教程,但不写入文件,也不显示任何错误消息。

教程在这里:file.cpp

我做错什么了?

它不需要行:logging::add_file_log("F:\\sample.log");,但是我尝试了不同的文件位置,而且它哪里也不写

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-03 08:50:39

问题是您的记录器没有严重性属性。它不会在日志记录中生成严重性值,因此您设置的筛选器总是拒绝记录。

在您链接的文档示例中,您可以看到severity_loggerBOOST_LOG_SEV用于日志记录(参见docs 这里)。severity_logger记录器具有模板参数中指定的类型的严重性属性,BOOST_LOG_SEV宏为每个日志记录提供严重性值。注意,属性值的类型(严重性级别)必须匹配过滤器和格式化程序(如果有安装的话)。您设置的筛选器中的logging::trivial::severity关键字意味着严重性级别应该具有boost::log::trivial::severity_level类型。

票数 4
EN

Stack Overflow用户

发布于 2015-10-02 12:46:22

当处理转义序列时,文件路径"F:\sample.log"可能等同于"F:sample.log"。(根据N3337 2.14.3字符文本,这是实现定义的)

:无法在Windows中的文件名中使用。

你是说"F:\\sample.log"

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32907447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档