关于boost_log_trivial的奇怪事情,没有记录文件

时间:2015-06-13 02:03:30

标签: c++ boost

我做了一个简单的升级日志程序,如下所示,它可以工作,

#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没有输出任何文件的提示?

感谢。

0 个答案:

没有答案