【问题标题】:Boost log doesn't write to file, how to?Boost日志不写入文件,怎么办?
【发布时间】:2015-10-02 12:43:16
【问题描述】:

这是我的代码:

#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 教程,但它不写入文件并且不显示任何错误消息

教程在这里:http://www.boost.org/doc/libs/master/libs/log/example/doc/tutorial_file.cpp

我做错了什么?

它可以在没有行的情况下工作:logging::add_file_log("F:\\sample.log"); 但我尝试了不同的文件位置,但它不会在任何地方写入

【问题讨论】:

标签: c++ logging boost boost-log boost-logging


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这里就是这样,奇怪的是它只是导致文件
【解决方案2】:

当处理转义序列时,文件路径"F:\sample.log" 可能等同于"F:sample.log"。 (这是实现定义的,根据N3337 2.14.3 字符文字)
: 在 Windows 中的文件名中不可用。
你是说"F:\\sample.log"吗?

【讨论】:

  • 谢谢,但这是我的错字,我用 `\\` 尝过,工作流程是一样的,我之前只测试过“sample.log”,但什么也没做跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2020-01-04
相关资源
最近更新 更多