Boost日志不写入文件,怎么办?
Boost log doesn't write to file, how to?
这是我的代码:
#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");
但我尝试了不同的文件位置并且它没有写入任何地方
如果处理转义序列,文件路径 "F:\sample.log"
可能等同于 "F:sample.log"
。 (这是实现定义的,根据 N3337 2.14.3 字符文字)
:
不能用于 Windows.
中的文件名
您是说 "F:\sample.log"
吗?
问题是您的记录器没有严重性属性。它不会在日志记录中产生严重性值,因此您设置的过滤器总是拒绝记录。
在您链接的文档的示例中,您可以看到 severity_logger
和 BOOST_LOG_SEV
用于日志记录(请参阅文档 here)。 severity_logger
记录器具有模板参数中指定类型的严重性属性,BOOST_LOG_SEV
宏为每个日志记录提供严重性值。请注意,属性值的类型(严重性级别)必须与过滤器和格式化程序匹配(如果已安装)。您设置的过滤器中的 logging::trivial::severity
关键字表示严重性级别的类型应为 boost::log::trivial::severity_level
.
这是我的代码:
#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");
但我尝试了不同的文件位置并且它没有写入任何地方
如果处理转义序列,文件路径 "F:\sample.log"
可能等同于 "F:sample.log"
。 (这是实现定义的,根据 N3337 2.14.3 字符文字)
:
不能用于 Windows.
中的文件名
您是说 "F:\sample.log"
吗?
问题是您的记录器没有严重性属性。它不会在日志记录中产生严重性值,因此您设置的过滤器总是拒绝记录。
在您链接的文档的示例中,您可以看到 severity_logger
和 BOOST_LOG_SEV
用于日志记录(请参阅文档 here)。 severity_logger
记录器具有模板参数中指定类型的严重性属性,BOOST_LOG_SEV
宏为每个日志记录提供严重性值。请注意,属性值的类型(严重性级别)必须与过滤器和格式化程序匹配(如果已安装)。您设置的过滤器中的 logging::trivial::severity
关键字表示严重性级别的类型应为 boost::log::trivial::severity_level
.