Ejemplo n.º 1
0
void init()
{	
	boost::log::add_common_attributes<wchar_t>();
	typedef boost::log::aux::add_common_attributes_constants<wchar_t> traits_t;

	typedef boost::log::sinks::synchronous_sink<boost::log::sinks::wtext_file_backend> file_sink_type;

	typedef boost::log::sinks::asynchronous_sink<boost::log::sinks::wtext_ostream_backend> stream_sink_type;

	auto stream_backend = boost::make_shared<boost::log::sinks::wtext_ostream_backend>();
	stream_backend->add_stream(boost::shared_ptr<std::wostream>(&std::wcout, boost::log::empty_deleter()));
	stream_backend->auto_flush(true);

	auto stream_sink = boost::make_shared<stream_sink_type>(stream_backend);
	
//#ifdef NDEBUG
//	stream_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= debug);
//#else
//	stream_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= debug);
//#endif

	stream_sink->locked_backend()->set_formatter(&my_formatter);

	boost::log::wcore::get()->add_sink(stream_sink);
}
void
LoggerFactory::setDestinationImpl(std::ostream& os)
{
  std::lock_guard<std::mutex> lock(m_mutex);

  auto backend = boost::make_shared<boost::log::sinks::text_ostream_backend>();
  backend->auto_flush(true);
  backend->add_stream(boost::shared_ptr<std::ostream>(&os, bind([]{})));

  boost::log::core::get()->remove_sink(m_sink);
  m_sink.reset();

  m_sink = boost::make_shared<Sink>(backend);
  m_sink->set_formatter(boost::log::expressions::stream << boost::log::expressions::message);
  boost::log::core::get()->add_sink(m_sink);
}
Ejemplo n.º 3
0
LoggerFactory::LoggerFactory()
  : m_defaultLevel(LOG_INFO)
{
  m_levelNames["NONE"] = LOG_NONE;
  m_levelNames["ERROR"] = LOG_ERROR;
  m_levelNames["WARN"] = LOG_WARN;
  m_levelNames["INFO"] = LOG_INFO;
  m_levelNames["DEBUG"] = LOG_DEBUG;
  m_levelNames["TRACE"] = LOG_TRACE;
  m_levelNames["ALL"] = LOG_ALL;

  auto backend = boost::make_shared<boost::log::sinks::text_ostream_backend>();
  backend->auto_flush(true);
  backend->add_stream(boost::shared_ptr<std::ostream>(&std::clog, bind([]{})));

  m_sink = boost::make_shared<Sink>(backend);
  m_sink->set_formatter(boost::log::expressions::stream << boost::log::expressions::message);
  boost::log::core::get()->add_sink(m_sink);
}
Ejemplo n.º 4
0
void add_cout_sink()
{
    boost::log::add_common_attributes();
    // boost::log::core::get()->add_global_attribute("NativeThreadId",
    // boost::log::attributes::make_function(&std::this_thread::get_id));
    boost::log::core::get()->add_global_attribute("TimestampMillis", boost::log::attributes::make_function([] {
                                                      return boost::posix_time::microsec_clock::local_time();
                                                  }));

    using stream_sink_type = sinks::asynchronous_sink<sinks::wtext_ostream_backend>;

    auto stream_backend = boost::make_shared<boost::log::sinks::wtext_ostream_backend>();
    stream_backend->add_stream(boost::shared_ptr<std::wostream>(&std::wcout, boost::null_deleter()));
    stream_backend->auto_flush(true);

    auto stream_sink = boost::make_shared<stream_sink_type>(stream_backend);

    stream_sink->set_formatter(boost::bind(&my_formatter<boost::log::wformatting_ostream>, false, _1, _2));

    logging::core::get()->add_sink(stream_sink);
}
Ejemplo n.º 5
0
void
Logging::setDestinationImpl(shared_ptr<std::ostream> os)
{
  std::lock_guard<std::mutex> lock(m_mutex);

  m_destination = std::move(os);

  auto backend = boost::make_shared<boost::log::sinks::text_ostream_backend>();
  backend->auto_flush(true);
  backend->add_stream(boost::shared_ptr<std::ostream>(m_destination.get(), [] (auto) {}));

  if (m_sink != nullptr) {
    boost::log::core::get()->remove_sink(m_sink);
    m_sink->flush();
    m_sink.reset();
  }

  m_sink = boost::make_shared<Sink>(backend);
  m_sink->set_formatter(boost::log::expressions::stream << boost::log::expressions::message);
  boost::log::core::get()->add_sink(m_sink);
}
Ejemplo n.º 6
0
BOOST_LOG_GLOBAL_LOGGER_INIT(__logger, bl::sources::severity_logger_mt)
{
    bl::sources::severity_logger_mt<boost::log::trivial::severity_level> logger;
    logger.add_attribute("TimeStamp", bl::attributes::local_clock());

    using text_sink = bl::sinks::asynchronous_sink<bl::sinks::text_ostream_backend>;
    auto consoleSink = boost::make_shared<text_sink>();
    consoleSink->locked_backend()->add_stream(boost::shared_ptr<std::ostream>(&std::cout, boost::null_deleter()));
    consoleSink->set_filter(severity >= boost::log::trivial::severity_level::warning);

    using file_sink = bl::sinks::asynchronous_sink<bl::sinks::text_file_backend>;
    auto logfileSink = boost::make_shared<file_sink>();
    
    {
        auto logfileBackend = logfileSink->locked_backend();
        logfileBackend->set_time_based_rotation(bl::sinks::file::rotation_at_time_point(0, 0, 0));
        logfileBackend->set_file_name_pattern("Logs\\ashbot_%Y%m%d.log");
        logfileBackend->auto_flush();
        logfileBackend->set_file_collector(
            bl::sinks::file::make_collector(bl::keywords::target = "Logs\\Archive")
        );
    }

    namespace expr = bl::expressions;

    bl::formatter fmt = expr::stream
        << format_date_time(timestamp, "%Y-%m-%d %H:%M:%S.%f")
        << " [" << boost::log::trivial::severity << "] "
        << expr::smessage;
    logfileSink->set_formatter(fmt);

    bl::core::get()->add_sink(consoleSink);
    bl::core::get()->add_sink(logfileSink);

    return logger;
}
Ejemplo n.º 7
0
//Defines a global logger initialization routine
BOOST_LOG_GLOBAL_LOGGER_INIT(my_logger, logger_t)
{
    logger_t lg;

    logging::add_common_attributes();

#if 0
    auto flsink = logging::add_file_log(
                      boost::log::keywords::file_name = SYS_LOGFILE,
                      boost::log::keywords::format = (
                                  expr::stream << expr::format_date_time<     boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S")
                                  << " [" << expr::attr<     boost::log::trivial::severity_level >("Severity") << "]: "
                                  << expr::wmessage
                              )
                  );

    flsink->imbue(std::locale(std::locale(), new std::codecvt_utf8_utf16<wchar_t>));
#endif

    boost::shared_ptr<logging::core> core = logging::core::get();

#if 0
    boost::shared_ptr<sinks::text_ostream_backend> ostream_backend =
        boost::make_shared<sinks::text_ostream_backend>();
    ostream_backend->add_stream(
        boost::shared_ptr<std::ostream>(&std::clog, logging::empty_deleter()));
    ostream_backend->auto_flush(true);

    typedef sinks::synchronous_sink<sinks::text_ostream_backend> sink_ostream_t;
    boost::shared_ptr<sink_ostream_t> sink_ostream(new sink_ostream_t(ostream_backend));
    sink_ostream->set_formatter(
        expr::format("[%1%] [%2%]\t%3%")
        % expr::format_date_time<boost::posix_time::ptime>("TimeStamp", "%Y-%m-%d %H:%M:%S.%f")
        % logging::trivial::severity
        % expr::message);

    core->add_sink(sink_ostream);
#endif

    // ログのファイル出力を設定
    auto text_backend = boost::make_shared<sinks::text_file_backend>(
                            boost::log::keywords::file_name = static_cast<LPCWSTR>(Misc::GetExeDirectory() + SYS_LOGFILE)
                        );
    text_backend->auto_flush(true);

    typedef sinks::synchronous_sink<sinks::text_file_backend> sink_text_t;
    boost::shared_ptr<sink_text_t> sink_text(new sink_text_t(text_backend));

    sink_text->set_formatter(
        expr::format("%1% [%2%]: %3%")
        % expr::format_date_time<boost::posix_time::ptime>("TimeStamp", "%Y-%m-%d %H:%M:%S")
        % logging::trivial::severity
        % expr::wmessage);
    sink_text->imbue(std::locale(std::locale(), new std::codecvt_utf8_utf16<wchar_t>));
    core->add_sink(sink_text);

#ifdef _DEBUG
    // ログのコンソール出力を設定
    ::AllocConsole();
    //::SetConsoleOutputCP(CP_UTF8);
    FILE* out = nullptr;
    freopen_s(&out, "CON", "w", stdout);

    auto console_sink = logging::add_console_log(std::wcout);
    console_sink->set_formatter(
        expr::format(L"%1% [%2%]: %3%")
        % expr::format_date_time<boost::posix_time::ptime>("TimeStamp", "%Y-%m-%d %H:%M:%S")
        % logging::trivial::severity
        % expr::wmessage);
    //console_sink->imbue(std::locale(std::locale(), new std::codecvt_utf8_utf16<wchar_t>));
#endif

    logging::core::get()->set_filter
    (
#ifdef _DEBUG
        logging::trivial::severity >= logging::trivial::info
#else
        logging::trivial::severity >= logging::trivial::error
#endif
    );

    return lg;
}