#include <ios>
#include <iomanip>
+#include <mutex>
#include <string>
+#include <thread>
#include <ostream>
#include <boost/shared_ptr.hpp>
#include <boost/bind.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/property_tree/ptree.hpp>
-#include <boost/thread/mutex.hpp>
#include <tbb/atomic.h>
{
std::function<void(std::string line)> formatted_line_sink_;
public:
- sink_backend(std::function<void(std::string line)> formatted_line_sink)
+ // The dummy parameter is to work around a bug in newer Boost.Log, where single-argument
+ // constructor forwarders are not recognized unless the parameter uses Boost.Parameter.
+ sink_backend(std::function<void(std::string line)> formatted_line_sink, int)
: formatted_line_sink_(std::move(formatted_line_sink))
{
}
typedef boost::log::sinks::synchronous_sink<sink_backend> sink_type;
- auto sink = boost::make_shared<sink_type>(std::move(formatted_line_sink));
+ auto sink = boost::make_shared<sink_type>(std::move(formatted_line_sink), 0);
bool print_all_characters = true;
sink->set_formatter(boost::bind(&my_formatter<boost::log::formatting_ostream>, print_all_characters, _1, _2));
});
}
-boost::mutex& get_filter_mutex()
+std::mutex& get_filter_mutex()
{
- static boost::mutex instance;
+ static std::mutex instance;
return instance;
}
void set_log_level(const std::wstring& lvl)
{
- boost::lock_guard<boost::mutex> lock(get_filter_mutex());
+ std::lock_guard<std::mutex> lock(get_filter_mutex());
if (boost::iequals(lvl, L"trace"))
get_level() = boost::log::trivial::trace;
else
return; // Ignore
- boost::lock_guard<boost::mutex> lock(get_filter_mutex());
+ std::lock_guard<std::mutex> lock(get_filter_mutex());
auto& disabled_categories = get_disabled_categories();
if (enabled)