我做了一个简单的升级日志程序,如下所示,它可以工作,
#include <iostream>
#include <boost/log/trivial.hpp>
#include <boost/log/core.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/sinks.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/log/attributes.hpp>
typedef boost::log::sinks::synchronous_sink<boost::log::sinks::text_file_backend> file_sink;
int main()
{
//Set up logging
boost::log::core::get()->set_filter
(
boost::log::trivial::severity >= boost::log::trivial::info
);
// Create a text file sink
boost::shared_ptr< file_sink > sink(new file_sink(
boost::log::keywords::file_name = "/var/log/a.log.%N",
boost::log::keywords::rotation_size = 100
));
// Set up where the rotated files will be stored
sink->locked_backend()->set_file_collector(boost::log::sinks::file::make_collector(
boost::log::keywords::target = "/var/log",
boost::log::keywords::max_size = 200
));
// Upon restart, scan the directory for files matching the file_name pattern
sink->locked_backend()->scan_for_files();
sink->set_formatter
(
boost::log::expressions::format("[%1%][%2%]%3%")
% boost::log::expressions::attr< boost::posix_time::ptime >("TimeStamp")
% boost::log::trivial::severity
% boost::log::expressions::smessage
);
boost::log::core::get()->add_sink(sink);
boost::log::core::get()->add_global_attribute("TimeStamp", boost::log::attributes::local_clock());
for (int i = 0; i < 100; i++)
{
BOOST_LOG_TRIVIAL(warning) << "hello, I am a log for testing";
}
return 0;
}
一切正常。
我使用以下方法编译它:
g ++ test.cc -lboost_log -DBOOST_LOG_DYN_LINK -lboost_thread -lpthread -lboost_system
我有大约50个文件的源代码。它正在使用BOOST_LOG_TRIVIAL(警告)等。它可以毫无问题地将所有内容输出到控制台。
然后我在源代码的main函数的开头添加了前一个程序中的所有内容,但之后没有日志输出到日志文件。
日志文件是在/ var / log中创建的(通过使用sudo来运行程序,但文件只是空的。当然,控制台上也没有。
我的程序使用以下内容编译,
g ++ ./http/.cc ./.cc ../l/database/*.cc ../lib/ipc/ipc_fifo.cc -I./ -I./http/ -I ../ lib / -std = c ++ 11 -lboost_system -lboost_log -lboost_thread -DBOOST_LOG_DYN_LINK -lpthread -lboost_regex -lboost_filesystem -lboost_program_options -lmysqlclient -lsqlite3 -lmp4v2 -o a.out
任何人都可以分享一下为什么boost_log_trivial没有输出任何文件的提示?
感谢。