Coder Social home page Coder Social logo

log's Introduction

Boost.Log

Boost.Log, part of collection of the Boost C++ Libraries, provides tools for adding logging to libraries and applications.

Directories

  • build - Boost.Log build scripts
  • config - Boost.Log build configuration code and scripts
  • doc - QuickBook documentation sources
  • example - Boost.Log examples
  • include - Interface headers of Boost.Log
  • src - Compilable source code of Boost.Log
  • test - Boost.Log unit tests

More information

Build status

Branch GitHub Actions AppVeyor Test Matrix Dependencies
master GitHub Actions AppVeyor Tests Dependencies
develop GitHub Actions AppVeyor Tests Dependencies

License

Distributed under the Boost Software License, Version 1.0.

log's People

Contributors

adnn avatar crmoore avatar danieljames avatar edschouten avatar eldiener avatar ffontaine avatar gielvanschijndel-tomtom avatar glenfe avatar grafikrobot avatar gsauthof avatar jzmaddock avatar kuhlenough avatar lastique avatar lazka avatar lingxi-li avatar maximd-g avatar nekto89 avatar pdimov avatar steveire avatar swatanabe avatar wordaligned avatar wzssyqa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

log's Issues

Use std::chrono for time measurements

It would be great to get rid of boost::date_time or at least use it as an optional component. For programs using std::chrono from c++11 or boost::chrono this boost::date_time dependency is just a waste of space in final product binaries.

record_ostream.cpp does not respect BOOST_LOG_USE_COMPILER_TLS

Linker output

./3rdparty/boost/stage/lib/libboost_log.a(record_ostream.o): In function `boost::thread_specific_ptr<boost::log::v2s_mt_posix::aux::(anonymous namespace)::stream_compound_pool<char> >::~thread_specific_ptr()':
record_ostream.cpp:(.text+0x1b5): undefined reference to `boost::detail::set_tss_data(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*, bool)'
../3rdparty/boost/stage/lib/libboost_log.a(record_ostream.o): In function `boost::thread_specific_ptr<boost::log::v2s_mt_posix::aux::(anonymous namespace)::stream_compound_pool<wchar_t> >::~thread_specific_ptr()':
record_ostream.cpp:(.text+0x2a5): undefined reference to `boost::detail::set_tss_data(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*, bool)'
../3rdparty/boost/stage/lib/libboost_log.a(record_ostream.o): In function `boost::log::v2s_mt_posix::aux::stream_provider<char>::release_compound(boost::log::v2s_mt_posix::aux::stream_provider<char>::stream_compound*)':
...

indicates a dependency on Boost.Thread.

Expected result:
Boost.Log compiled with BOOST_LOG_USE_COMPILER_TLS does not have a dependency on Boost.Thread.

Boost 1.66, 1.69-beta1-rc2 crash @ ubuntu 16.04 - gcc-5.4

Hi,

I am not sure what is the root cause of the ${SUBJECT} problem, and i am not sure which component of boost
is crashing. From the gdb backtrace, I see the problem is with boost log and I am not sure whether it is the real problem.

I am attaching the back trace file, and in that file it is failing at the file dbActions.cpp:496
which is my code file, and the content of the file at that line number is

SLOG( debu ) << "executing query " << query; --> query is (const string&)

But, I am not facing this issue in visual studio 15.8.

Kindly let me know if I miss anything here.
back_trace.txt

Linker/visibility warnings on macOS for boost log 1.68.0

I'm trying to compile boost 1.68.0 from source for a project on macOS and I'm getting a pile of linker warnings. The warnings go away when I compile my project with -fvisibility=hidden (as expected) however, my project is multi-module and the library dependent on boost must itself be visible to a few other libraries and executables.

What's going on here? Is there a way to address these errors?

Here's my configure and build commands:

./bootstrap.sh
      --prefix=some/prefix/in/my/build/folder
      --with-libraries=filesystem
      --with-libraries=locale
      --with-libraries=log
      --with-libraries=system
      --with-libraries=thread

./b2 install
      cxxstd=17 # because boost_system barfs when trying to link cxx17 code
      link=shared # I've also tried static
      variant=release
      threading=multi
      runtime-link=shared # I even tried static here just to see what would happen

And I'm linking these libraries:
boost_system, boost_thread, boost_filesystem, boost_locale, boost_log_setup, boost_log

build issues with avx2 now required

The compiler detection when upgrading from 1.65 to 1.68, now sets the flag compiler-supports-avx2 which is then used to build in avx2 instructions into the library within the log library. There appears to be no way to disable this other than modifying the log library (or changing the jam file after the failure).

I only noticed this as I upgraded to gcc-4.9.4 with C++11 support but the binutils does not support avx2 instructions, so I can't build boost 1.68 on the target host as delivered.

Failures on g++ 4.8 / clang 3.9 on Travis

See https://travis-ci.org/boostorg/boost/builds/292271102

testing.capture-output bin.v2/libs/log/test/form_max_size_decor.test/gcc-gnu-4.8/debug/cxxstd-11/threadapi-pthread/threading-multi/form_max_size_decor.run
====== BEGIN OUTPUT ======
Running 3 test cases...
Left: "При�"
Right: "При"
libs/log/test/run/form_max_size_decor.cpp(163): error: in "character_boundary_maintenance": check equal_strings(strm1.str(), strm2.str()) has failed
Left: "П�>>>"
Right: "П>>>"
libs/log/test/run/form_max_size_decor.cpp(175): error: in "character_boundary_maintenance": check equal_strings(strm1.str(), strm2.str()) has failed
*** 2 failures are detected in the test module "form_max_size_decor"
EXIT STATUS: 201
====== END OUTPUT ======

https://travis-ci.org/boostorg/boost/jobs/292271110#L2500
https://travis-ci.org/boostorg/boost/jobs/292271111#L2615

Boost log compilation error

Hi,
I am trying to compile Boost 1.64.0 using android NDK 16b for arm64 using gcc (since we have specific requirement for gcc compilation)
It fails to compile boost_log and results in below error .

boost/boost_1_64_0/libs/log/src/dump_avx2.cpp:21:23: fatal error: immintrin.h: No such file or directory
#include <immintrin.h>
compilation terminated.
CMakeFiles/boost_log.dir/build.make:278: recipe for target 'CMakeFiles/boost_log.dir/boost_1_64_0/libs/log/src/dump_avx2.cpp.o' failed
make[2]: *** [CMakeFiles/boost_log.dir/boost_1_64_0/libs/log/src/dump_avx2.cpp.o] Error 1
make[2]: *** Waiting for unfinished

My build environment:
Android NDK - android-ndk16b
NDK API level - 24
C Compiler - GCC (GNU 4.9.0)
Cmake - 3.9.4
STL - gnustl_static
Host - Ubuntu 16.04.4

Please help me in resolving this. Thank you.

boost.log 1.63 regression with BOOST_LOG_TRIVIAL(info)

I'm on boost 1.63 as installed by homebrew on OS X 10.11.6 and Xcode Version 8.2.1 (8C1002). I'm getting a crash on the following line available at this link:

    BOOST_LOG_TRIVIAL(info) << "Inverse Kinematics plugin initialized. Build date/time: " << __DATE__ << " " << __TIME__ <<"\n";

This worked correctly on previous versions of Boost, and I'm building my source using cmake's xcode generator. I tested reverting back to boost 1.60 and this code runs correctly, so I believe it is due to a regression between boost 1.60 and boost 1.63. I also tried building 1.63 from source and was able to reproduce the crash.

Test I ran to switch libraries:

brew install boost
# clean, recompile, run, test crashed
brew reinstall boost --build-from-source
# clean, recompile, run, test crashed
brew uninstall boost
brew install boost160
brew link boost160 --force
# clean, recompile, run, test succeeded

Stack Trace:

#0	0x00007fff8d680981 in std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) ()
#1	0x000000012234ea9d in boost::log::v2_mt_posix::basic_formatting_ostream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::sentry::sentry(boost::log::v2_mt_posix::basic_formatting_ostream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) at /usr/local/include/boost/log/utility/formatting_ostream.hpp:127
#2	0x000000012234e5cd in boost::log::v2_mt_posix::basic_formatting_ostream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::sentry::sentry(boost::log::v2_mt_posix::basic_formatting_ostream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) at /usr/local/include/boost/log/utility/formatting_ostream.hpp:128
#3	0x000000012234e442 in boost::log::v2_mt_posix::basic_formatting_ostream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::formatted_write(char const*, long) at /usr/local/include/boost/log/utility/formatting_ostream.hpp:630
#4	0x000000012234e3fc in boost::log::v2_mt_posix::basic_formatting_ostream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator<<(char const*) at /usr/local/include/boost/log/utility/formatting_ostream.hpp:403
#5	0x0000000122327b18 in boost::log::v2_mt_posix::aux::enable_if_record_ostream<boost::log::v2_mt_posix::basic_record_ostream<char>, boost::log::v2_mt_posix::basic_record_ostream<char>&>::type boost::log::v2_mt_posix::operator<<<boost::log::v2_mt_posix::basic_record_ostream<char>, char [57]>(boost::log::v2_mt_posix::basic_record_ostream<char>&, char const (&) [57]) at /usr/local/include/boost/log/sources/record_ostream.hpp:203
#6	0x0000000122320374 in ::v_repStart(void *, int) at /Users/athundt/source/robonetracker/modules/grl/src/v_repExtGrlInverseKinematics/v_repExtGrlInverseKinematics.cpp:188
#7	0x00000001023efa0c in CPlugin::load() ()
#8	0x00000001023f05c8 in CPluginContainer::addPlugin(char const*, char const*) ()
#9	0x00000001023946a8 in CUiThread::__executeCommandViaUiThread(SUIThreadCommand*, SUIThreadCommand*) ()
#10	0x00000001023945f2 in CUiThread::executeCommandViaUiThread(SUIThreadCommand*, SUIThreadCommand*) ()
#11	0x000000010224d964 in simLoadModule_internal(char const*, char const*) ()
#12	0x000000010000203a in loadPlugin(char const*, char const*) ()
#13	0x000000010000262c in simulatorInit() ()
#14	0x00000001023bd2a8 in App::_runInitializationCallback(void (*)()) ()
#15	0x00000001023bd439 in App::run(void (*)(), void (*)(), void (*)()) ()
#16	0x000000010223a047 in simRunSimulator_internal(char const*, int, void (*)(), void (*)(), void (*)()) ()
#17	0x0000000100003d2c in main ()
#18	0x0000000100001fa4 in start ()

Also of note, when I compile I define:
ADD_DEFINITIONS(-DBOOST_LOG_DYN_LINK)

Only last message is sent using BOOST_LOG_SEV in case of multiple threads.

I am using BOOST LOG in my multi-threaded(maximum 3 at a time) application to send logs to remote rsyslog. I am using singleton class to maintain only 1 sink and using different loggers for each thread. Logs are being sent to remote syslog but many times I am facing this issue : If I send 5(more than 1) logs from a thread, 6 (more than 1) logs from another thread ,then

  1. In case of t1: only last log is sent to rsyslog and other logs are missing
  2. In case of t2: all logs are sent.
    Even if I create 1 thread then also all other logs are missing except last log.
    Is this because of singleton class and BOOST_LOG_SEV and syslog sink is not able to handle multiple threads or some other issue? Can someone please help?
    (My code was working when syslog sink was global and all logs were sent to rsyslog properly, when I changed it to singleton object it started above behaviour. )

CODE:
header file

class BaseHelper
{
      vector<string>sendlogs;
};
class SysLogSink
{
	static SysLogSink* _instance;
	boost::shared_ptr< sinks::synchronous_sink< sinks::syslog_backend > > sink;
public:
	static SysLogSink* getInstance();
	SysLogSink();
	int initialize(string hostname);
};

class SysLogHelper : public BaseHelper
{
	string tag;
	SysLogSink* sysLogSink;
	src::severity_logger<> lg;
public:
	SysLogHelper();
	int initialize(string hostname);
	int sendLogstoSyslog(string message);
	void setPropertiesMessage(string tag);
};

Cpp file:

BaseHelper::BaseHelper()
{
  sendLogs.clear();
}

void BaseHelper::addMessagesToVectorAndSend()
{
//It will do some processing and add messages to sendLogs vector.
for(each record in vector)
   sendLogstoSyslog(1 record at a time);

//Here if I send 6(more than 1) messages, I am able to see only last message in rsyslog's /var/log/messages, Is it because of some thread issue or am I doing something wrong here?
}

SysLogSink * SysLogSink::_instance = NULL;

SysLogSink* SysLogSink::getInstance()
{
	if (_instance == NULL)
	{
		_instance = new SysLogSink();
	}
	return _instance;
}

SysLogSink::SysLogSink()
{
	sink = boost::shared_ptr<sinks::synchronous_sink< sinks::syslog_backend >>(new sinks::synchronous_sink< sinks::syslog_backend >());
}

int SysLogSink::initialize(string hostname)
{
	try
	{
		sink->set_formatter
		(
			expr::format("%1%")
			% expr::smessage
		);
		sink->locked_backend()->set_target_address(hostname);
		logging::core::get()->add_sink(sink);
	}
	catch (std::exception& e)
	{
		return 1;
	}
	return 0;
}
SysLogHelper::SysLogHelper()
{
	tag = "";
	sysLogSink = NULL;
}

void SysLogHelper::setPropertiesMessage(string tag)
{
	this->tag = tag;
}
int SysLogHelper::sendLogstoSyslog(string message)
{
	try
	{
		message = tag + message;
		BOOST_LOG_SEV(lg, sinks::syslog::alert) << message;
	}
	catch (std::exception& e)
	{
		return 1;
	}
	return 0;
}

int SysLogHelper::initialize(string hostname)
{
	try
	{
		sysLogSink = SysLogSink::getInstance();
		if (sysLogSink)
		{
			sysLogSink->initialize(hostname);
		}
	}
	catch(std::exception& e)
	{
		return 1;
	}
	return 0;
}


void startprocessing()
{
   SysLogHelper sh;
   sh.initialize("172.16.56.233");
string tag1 = "some unique tag for each thread";
sh.setPropertiesMessage(/*add unique tag for each thread*/ tag1);
   sh.addMessagesToVectorAndSend();
}

int main()
{

//creating multiple threads t1, t2,and t3.
            //each thread calls startprocessing function.


}

address sanitize dumps error

I'm using Boost 1.65. It seems newer version has the same problem. Even the first example has the same problem.
I compile my code with -fsanitize=address -fsanitize=undefined options. When run the application it will dump errors listed below but not crash:

/usr/local/include/boost/smart_ptr/detail/shared_count.hpp:426:36: runtime error: member call on address 0x6030000134b0 which does not point to an object of type 'sp_counted_base' 0x6030000134b0: note: object is of type 'boost::detail::sp_counted_impl_p<boost::log::v2_mt_posix::core>' 03 00 80 6a 40 2a 4f fb b6 7f 00 00 05 00 00 00 01 00 00 00 b0 ed 00 00 20 60 00 00 00 00 00 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'boost::detail::sp_counted_impl_p<boost::log::v2_mt_posix::core>' /usr/local/include/boost/log/attributes/attribute_value.hpp:200:37: runtime error: member call on address 0x60400000cad0 which does not point to an object of type 'impl' 0x60400000cad0: note: object is of type 'boost::log::v2_mt_posix::attributes::attribute_value_impl<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >' 01 00 00 43 88 2a 4f fb b6 7f 00 00 01 00 00 00 be be be be b0 22 01 00 30 60 00 00 1d 00 00 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'boost::log::v2_mt_posix::attributes::attribute_value_impl<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'

Rotating Log writes to original file?

Can Boost Log write data always to the original file.
And the old data stored in file with name with pattern.

So the newly added log data can always be checked via tail like this:
$ tail -f ~/message.log
(like: tail -f /var/log/message)

Old data stored when it reach limit in file with pattern:
~/old_log/message_20181206_113059_00001.log

Can't append file using text_file_backend

Hi! I was trying to use the boost log to write into a file and append to it when the application restarts (and not to create a new rotating file) with a basic text_file_backend like the following, but it seems that it doesnt work - which means that nothing changes when boostlog_keywords::open_mode = std::ios_base::app is added.

  typedef boostlog_sinks::synchronous_sink< boostlog_sinks::text_file_backend > file_sink;
  boost::shared_ptr< file_sink > sink(new file_sink(
      boostlog_keywords::auto_flush = true,
      boostlog_keywords::auto_flush = true,
      boostlog_keywords::file_name = "file-%m%d%Y_%H%M_%2N.log",
      boostlog_keywords::rotation_size = 5 * 1024 * 1024,
      boostlog_keywords::format = "[%TimeStamp%][%ThreadID%] *%Severity%* %Message%",
      boostlog_keywords::open_mode = std::ios_base::app
  ));

The full code is here.

Tests from boost libraries failed to run after boost submodule log updated from b22211 to 1138b4

Environment:
VS 2017 + Windows Server 2016

Issue description:
We build and run test for boost and we found one tests failed to run after boost submodule log updated from b22211 to 1138b4 boostorg/log@e575e40
Could you please take a look?

Reproduce steps:

  1. git clone -c core.autocrlf=true --recursive ​https://github.com/boostorg/boost.git D:\Boost\src
  2. open a VS 2017 x86 command prompt and browse to D:\Boost\src
  3. .\bootstrap
  4. .\b2 headers variant=release --build-dir=..\out\Release --address-model=32
  5. .\b2 variant=release --build-dir=..\out\Release --address-model=32
  6. .\b2 -j4 variant=release --build-dir=..\out\x86rel libs\log\test

log_x86_test_60.log

ErrorMessage:
..\out\x86rel\boost\bin.v2\libs\log\example\basic_usage\msvc-14.1\release\threadapi-win32\threading-multi\main.obj
main.cpp
.\boost/parameter/aux_/unwrap_cv_reference.hpp(34): error C2528: 'abstract declarator': pointer to reference is illegal
.\boost/mpl/if.hpp(63): note: see reference to class template instantiation 'boost::parameter::aux::is_cv_reference_wrapper' being compiled
with
[
T=const char (&)[11]
]
.\boost/mpl/eval_if.hpp(40): note: see reference to class template instantiation 'boost::mpl::if_<C,F1,F2>' being compiled
with
[
C=boost::parameter::aux::is_cv_reference_wrapper<const char (&)[11]>,
F1=boost::parameter::aux::get_type<const char (&)[11]>,
F2=boost::mpl::identity<const char (&)[11]>
]
.\boost/parameter/aux_/unwrap_cv_reference.hpp(84): note: see reference to class template instantiation 'boost::mpl::eval_if<boost::parameter::aux::is_cv_reference_wrapper,boost::parameter::aux::get_type,boost::mpl::identity>' being compiled
with
[
T=const char (&)[11]
]
.\boost/parameter/aux_/tag.hpp(21): note: see reference to class template instantiation 'boost::parameter::aux::unwrap_cv_reference' being compiled
with
[
ActualArg=const char (&)[11]
]
.\boost/log/utility/setup/file.hpp(127): note: see reference to class template instantiation 'boost::parameter::aux::tag<boost::log::v2_mt_nt6::keywords::tag::file_name,const char (&)[11]>' being compiled
.\boost/log/utility/setup/file.hpp(107): note: see reference to function template instantiation 'parameter::aux::tag<boost::log::v2_mt_nt6::keywords::tag::file_name,const T&>::type boost::log::v2_mt_nt6::aux::wrap_file_name(const T &,boost::mpl::false_)' being compiled
libs\log\example\basic_usage\main.cpp(103): note: see reference to function template instantiation 'boost::shared_ptr<boost::log::v2_mt_nt6::sinks::synchronous_sinkboost::log::v2_mt_nt6::sinks::text_file_backend> boost::log::v2_mt_nt6::add_file_log<char[11],boost::parameter::aux::tagged_argument<Keyword,const boost::phoenix::actor>,boost::parameter::aux::tagged_argument<boost::log::v2_mt_nt6::keywords::tag::format,const boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,2>>>>(const T0 (&),const T1 &,const T2 &)' being compiled
with
[
Keyword=boost::log::v2_mt_nt6::keywords::tag::filter,
Expr=boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::greater_equal,boost::proto::argsns_::list2<boost::log::v2_mt_nt6::expressions::attribute_actor<severity_level,boost::log::v2_mt_nt6::fallback_to_none,void,boost::phoenix::actor>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<severity_level>,0>>>,2>,
Tag=boost::proto::tagns_::tag::shift_left,
Args=boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2_mt_nt6::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2_mt_nt6::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2_mt_nt6::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2_mt_nt6::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<boost::phoenix::argument<2>>,0>>,boost::posix_time::ptime,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::aux::light_function<void (boost::log::v2_mt_nt6::basic_formatting_ostream<char,std::char_traits,std::allocator> &,const boost::posix_time::ptime &)>>>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char [3]>,0>>>,2>>,boost::log::v2_mt_nt6::attributes::timer::value_type,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::aux::light_function<void (boost::log::v2_mt_nt6::basic_formatting_ostream<char,std::char_traits,std::allocator> &,const boost::posix_time::time_duration &)>>>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char [4]>,0>>>,2>>,boost::log::v2_mt_nt6::attributes::named_scope::value_type,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::expressions::aux::format_named_scope_impl>>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char [4]>,0>>>,2>>,severity_level,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::to_log_fun>>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char [3]>,0>>>,2>>,boost::log::v2_mt_nt6::expressions::attribute_actor<boost::mpl::vector2std::string,std::wstring,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::expressions::tag::message,boost::phoenix::actor>>,
T0=char [11],
T1=boost::parameter::aux::tagged_argument<boost::log::v2_mt_nt6::keywords::tag::filter,const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::greater_equal,boost::proto::argsns_::list2<boost::log::v2_mt_nt6::expressions::attribute_actor<severity_level,boost::log::v2_mt_nt6::fallback_to_none,void,boost::phoenix::actor>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<severity_level>,0>>>,2>>>,
T2=boost::parameter::aux::tagged_argument<boost::log::v2_mt_nt6::keywords::tag::format,const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2_mt_nt6::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2_mt_nt6::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2_mt_nt6::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2_mt_nt6::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<boost::phoenix::argument<2>>,0>>,boost::posix_time::ptime,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::aux::light_function<void (boost::log::v2_mt_nt6::basic_formatting_ostream<char,std::char_traits,std::allocator> &,const boost::posix_time::ptime &)>>>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char [3]>,0>>>,2>>,boost::log::v2_mt_nt6::attributes::timer::value_type,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::aux::light_function<void (boost::log::v2_mt_nt6::basic_formatting_ostream<char,std::char_traits,std::allocator> &,const boost::posix_time::time_duration &)>>>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char [4]>,0>>>,2>>,boost::log::v2_mt_nt6::attributes::named_scope::value_type,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::expressions::aux::format_named_scope_impl>>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char [4]>,0>>>,2>>,severity_level,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::to_log_fun>>,boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char [3]>,0>>>,2>>,boost::log::v2_mt_nt6::expressions::attribute_actor<boost::mpl::vector2std::string,std::wstring,boost::log::v2_mt_nt6::fallback_to_none,boost::log::v2_mt_nt6::expressions::tag::message,boost::phoenix::actor>>,2>>>
]
.\boost/parameter/aux_/unwrap_cv_reference.hpp(34): error C2528: '': pointer to reference is illegal

call "..\out\x86rel\boost\bin.v2\standalone\msvc\msvc-14.1\msvc-setup.bat"  >nul

cl /Zm800 -nologo @"..\out\x86rel\boost\bin.v2\libs\log\example\basic_usage\msvc-14.1\release\threadapi-win32\threading-multi\main.obj.rsp"

boost::log does not build with -DBOOST_ASIO_NO_DEPRECATED

The library uses boost::asio but did not update to the new ASIO API. For example io_service -> io_context.
For example:

libs/log/src/syslog_backend.cpp:300:52: error: expected « ) » before « & » token
         explicit syslog_udp_socket(asio::io_service& service, asio::ip::udp const& protocol, asio::ip::udp::endpoint const& local_address) :
                                   ~                ^
                                                    )
libs/log/src/syslog_backend.cpp:332:15: error: « io_service » dans l'espace de noms « boost::asio » ne nomme pas un type
         asio::io_service m_IOService;
               ^~~~~~~~~~

The new API was introduced in 1.66.0 which deprecated the old interface.

_WIN32_WINNT undefined

While building Boost 1.60.0 (with VS 2015), I get this message for syslog_backend.cpp and init_from_settings.cpp:

Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:
- add -D_WIN32_WINNT=0x0501 to the compiler command line; or
- add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.
Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).

It comes from asio/detail/config.hpp, but is caused, I think, by detail/winapi/config.hpp getting its definitions wrong:

#if !defined(BOOST_USE_WINAPI_VERSION)
#if defined(_WIN32_WINNT)
#define BOOST_USE_WINAPI_VERSION _WIN32_WINNT
#elif defined(WINVER)
#define BOOST_USE_WINAPI_VERSION WINVER
#else
// By default use Windows Vista API on compilers that support it and XP on the others
#if (defined(_MSC_VER) && _MSC_VER <= 1400) || defined(BOOST_WINAPI_IS_MINGW)
#define BOOST_USE_WINAPI_VERSION BOOST_WINAPI_VERSION_WINXP
#else
#define BOOST_USE_WINAPI_VERSION BOOST_WINAPI_VERSION_WIN6
#endif
#endif
#endif

#if defined(BOOST_USE_WINDOWS_H)
// We have to define the version macros so that windows.h provides the necessary symbols
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT BOOST_USE_WINAPI_VERSION
#endif
#if !defined(WINVER)
#define WINVER BOOST_USE_WINAPI_VERSION
#endif
#endif

Note that the value of BOOST_USE_WINAPI_VERSION, defined or defaulted, is transferred to _WIN32_WINNT only if BOOST_USE_WINDOWS_H is defined. It is not defined in my build, and AFAICT I'm not doing anything that would remove it or prevent it from getting defined by whatever might be supposed to define it.

Multiple threads need to send data to rsyslog(/var/log/logfile1.log, /var/log/logfile2.log) on remote machine

My application needs to create 1 syslog sink for each thread and each thread wants to send data independently.

class AlertsForSyslog
{
    string hostname;
	string message;
	src::severity_logger<> lg;
	boost::shared_ptr< sinks::synchronous_sink< sinks::syslog_backend > > sink;
    public :
    public :
	AlertsForSyslog(string hostname);
int sendMessageToSyslog(string message);
	void dd();
};

AlertsForSyslog::AlertsForSyslog(string hostname)
{
	this->hostname = hostname;
	sink = boost::make_shared<sinks::synchronous_sink< sinks::syslog_backend >>();
}

int AlertsForSyslog::sendMessageToSyslog(string message)
{
		this->message = message;
		sink->set_formatter
		(
			expr::format("%1%")
			%expr::smessage
		);

		sink->locked_backend()->set_target_address(hostname);

		
		// Add the sink to the core
		logging::core::get()->add_sink(sink);
		
	return 0;
}

	void AlertsForSyslog::dd()
	{
		BOOST_LOG_SEV(lg, sinks::syslog::alert) << message ;
	}

int main()
{
	cout << "hello";
	AlertsForSyslog n1 = AlertsForSyslog("172.16.72.239");
	n1.sendMessageToSyslog("from n1");
	AlertsForSyslog n2 = AlertsForSyslog("172.16.72.239");
	n2.sendMessageToSyslog("from n2");
	AlertsForSyslog n3 = AlertsForSyslog("172.16.72.239");
	n3.sendMessageToSyslog("from n3");
	n1.dd();
	n2.dd();
	n3.dd();
	return 0;
}

Above code gives me this output :

Apr  4 21:33:58 mypc from n1
Apr  4 21:33:58 mypc from n1
Apr  4 21:33:58 mypc from n1
Apr  4 21:33:58 mypc from n2
Apr  4 21:33:58 mypc from n2
Apr  4 21:33:58 mypc from n3
Apr  4 21:33:58 mypc from n3
Apr  4 21:33:58 mypc from n2
Apr  4 21:33:58 mypc from n3

But ideally it should be this right?

Apr  4 21:33:58 mypc from n1
Apr  4 21:33:58 mypc from n2
Apr  4 21:33:58 mypc from n3

How should I improve my code? I want to send logs using different threads on a remote syslog machine.

undefined reference to boost::log::v2_mt_posix::basic_formatter

getting this error on linux but everything works on visual studio

find_package(Boost 1.56.0 REQUIRED COMPONENTS ${USE_Boost_LIBRARIES} QUIET)

getting boost in superbuild with

list(APPEND _with_boost_libs --with-${USE_Boost_LIBRARIES})

and appealing it to b2

undefined reference to `boost::log::v2_mt_posix::basic_formatter<char> boost::log::v2_mt_posix::parse_formatter<char>(char const*, char const*)'

I'm just including log library with cmake same way as other boost libraries.
I've found this thread http://sourceforge.net/p/boost-log/discussion/710022/thread/0524c8d3/ but what is boost_log_setup? is it separate boost library?

file_name cannot end with a %pattern for collector to work

When initializing a sinks::text_file_backend, an attached collector won't delete files that exceed max_files unless the file_name ends with a static (non-pattern) character.

This works fine:
keywords::file_name = "logs/file.%Y%m%d-%H%M%S.log"
but this doesn't:
keywords::file_name = "logs/file.%Y%m%d-%H%M%S"
in that any number of files in the second case can exist, beyond the limit set by the collector's max_files.

Test failure on msvc-14.1

compile-c-c++ ..\..\bin.v2\libs\log\test\util_ipc_reliable_mq.test\msvc-14.1\deb
ug\threadapi-win32\threading-multi\run\util_ipc_reliable_mq.obj
util_ipc_reliable_mq.cpp
C:\Projects\boost-git\boost\boost/thread/win32/thread_heap_alloc.hpp(25): error
C2039: 'HeapAlloc': is not a member of 'boost::detail::winapi'
C:\Projects\boost-git\boost\boost/log/utility/permissions.hpp(37): note: see dec
laration of 'boost::detail::winapi'
C:\Projects\boost-git\boost\boost/thread/win32/thread_heap_alloc.hpp(25): error
C2039: 'GetProcessHeap': is not a member of 'boost::detail::winapi'
C:\Projects\boost-git\boost\boost/log/utility/permissions.hpp(37): note: see dec
laration of 'boost::detail::winapi'
C:\Projects\boost-git\boost\boost/thread/win32/thread_heap_alloc.hpp(35): error
C2039: 'HeapFree': is not a member of 'boost::detail::winapi'
C:\Projects\boost-git\boost\boost/log/utility/permissions.hpp(37): note: see dec
laration of 'boost::detail::winapi'
C:\Projects\boost-git\boost\boost/thread/win32/thread_heap_alloc.hpp(35): error
C2039: 'GetProcessHeap': is not a member of 'boost::detail::winapi'
C:\Projects\boost-git\boost\boost/log/utility/permissions.hpp(37): note: see dec
laration of 'boost::detail::winapi'

Wrong RFC 3164 implementation

Hello.

RFC 3164 implementation for udp_socket_based for syslog_backend broken.

Modified example https://github.com/boostorg/log/blob/develop/example/native_syslog/main.cpp
generate message:
<190> Oct 12 21:58:45 DESKTOP-G84C4JR native_syslog: 0: A syslog record with normal level
2 spaces between Oct & 12 (many thanks to github bugged editor)

1st:
The TIMESTAMP will immediately follow the trailing ">" from the PRI part

2nd:
The TIMESTAMP field is the local time and is in the format of "Mmm dd hh:mm:ss"

maybe another bugs, but I don't check

link error macOS

Undefined symbols for architecture x86_64:
"boost::log::v2s_mt_posix::attribute_set::insert(boost::log::v2s_mt_posix::attribute_name, boost::log::v2s_mt_posix::attribute const&)", referenced from:
boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_loggerboost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::sources::single_thread_model>::add_attribute_unlocked(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute const&)

1.70 Breaks My Cmake Builds

As of 1.70, boost in github breaks my cmake builds. This is not an issue in 1.69. It seems like boost now includes a bunch of cmake config files. Among other things, Boost_LIBRARIES from findboost no longer gets set, and boost::log does not find a library (causing the cmake to fail) unless BUILD_SHARED_LIBS is set to ON. It's not a huge problem for what I'm doing at the moment, but I imagine it could cause some trouble once more people start using this version.

Send multiple message at a time using one logger statement

Can I send multiple logs in one logging statement? I have 1000 logs in a vector, instead of sending them one by one can I send them together?

BOOST_LOG_SEV(lg, sinks::syslog::alert) << message ;

This statement will send 1 message at a time. If I have a vector of strings, can I send all the strings in vector using only 1 BOOST_LOG_SEV ? Do I need to modify formatter of sink?

              sink = boost::shared_ptr<sinks::synchronous_sink< sinks::syslog_backend >>(new sinks::synchronous_sink< sinks::syslog_backend >());
               sink->set_formatter
		(
			expr::format("%1%")
			%expr::smessage
		);
		
		sink->locked_backend()->set_target_address(hostname);
		
		//sink->set_filter(expr::has_attr<string>(uniquevalue));
		// Add the sink to the core
		logging::core::get()->add_sink(sink);
		

error cross-compiling for mingw-w64 on gentoo.

As stated in the title.

compile command line:
b2 --user-config=/tmp/portage/dev-libs/boost-1.65.0-r1/work/boost_1_65_0-abi_x86_32.x86/user-config.jam gentoorelease -j16 -q -d+2 -sICU_PATH=/usr --without-mpi --without-context --without-coroutine --without-fiber pch=off --boost-build=/usr/share/boost-build --prefix=/tmp/portage/dev-libs/boost-1.65.0-r1/image/usr --layout=system threading=multi link=shared -sNO_BZIP2=1 target-os=windows --without-python

user-config.jam:
using gcc : 6.4 : i686-w64-mingw32-g++ : <cflags>"-O2 -pipe -fomit-frame-pointer" <cxxflags>"-O2 -pipe -fomit-frame-pointer -std=c++14" <linkflags>"-Wl,-O1 -Wl,--as-needed" ;

build.log:
https://bpaste.net/show/0f4ad2771c83

if you need any other info, please let me know.

Important questions and suggestion

I have been studying the library for 2 weeks resulting in considerable disappointment both in the readability of documents and inconvenience of the lib. Here are some inquiry and suggestion.

  1. expr::format_date_time<boost::posix_time::ptime>("TimeStamp", "%Y-%m-%d %H:%M:%S") could not be used with lambda style formatter which is not illustrated. I suggest the document should give a clear example to show how to formatting TimeStamp in lambda style formatter and place the most notably marked notification.

2.The relationship of the headers are complex. In the tutorial, I strongly recommend to indicate which part each header is responsible for.

3.A very important requirement in log system is not given an example in the tutorial. How can I assign different loggers to different sinks or streams added to the sink backend? For example:
I have 3 modules(A B C) in my system. My requirement is all information of A are printed in the console, all info of B logged in B.log and all info of C logged in C.log.

I wish the document could be designed more friendly and with more consideration in practical user scenario. Thanks for any response.

basic_event_log_backend constructor requires keywords::message_file

A bit of a nuisance as I'm not familiar enough with these argument list constructors.

MSVC reports
sinks/event_log_backend.hpp(628): error C2679: binary '[' : no operator found which takes a right-hand operand of type 'const boost::parameter::keyword<boost::log::v2s_mt_nt5::keywords::tag::message_file>' (or there is no acceptable conversion)

https://github.com/boostorg/log/blob/master/include/boost/log/sinks/event_log_backend.hpp#L625-633

Even when keywords::registration = sinks::event_log::never and keywords::message_file and keywords::log_name are unused, keywords::message_file must be provided - perhaps as there is no default for it?

// Create an event log sink
boost::shared_ptr< sinks::wevent_log_backend > backend(
    new sinks::wevent_log_backend((
    keywords::message_file = L"",// "%SystemDir%\\event_log_messages.dll",  not initialising registry, don't need to provide the message dll name - if this isn't provided there is a compiler error here in MSVC
    //keywords::log_name = L"",// "Application",  not initializing registry, don't need to provide the named log 
    keywords::log_source = L"My Source",
    keywords::registration = sinks::event_log::never
    ))
    );

1.59\58 conditional formatter + csv_decor fails

Error compiling sample code in 1.59 & 1.58. At least 1.55 works fine

How to reproduce:

  1. Open example code -> open log/example/basic_usage/main.cpp ( actually works anywhere )
  2. Append next lines to formatter:
      << expr::if_(expr::contains(expr::smessage, "error"))
      [
        expr::stream << " an error msg: " << expr::csv_decor[expr::stream << expr::message]
      ]
      .else_
      [
        expr::stream << expr::csv_decor[expr::stream << expr::message]
      ]
  1. The code wont compile, the first error is:
    ..\formatters\char_decorator.hpp(320) : error C2039 : 'flush' : is not a member of 'boost::log::v2s_mt_nt5::expressions::aux::stream_ref<boost::log::v2s_mt_nt5::basic_formatting_ostream<char,std::char_traits<char>,std::allocator<char>>>'

strange stdcerr file in 1.67 rc2

In the 1.67rc2 candidate an empty file called stdcerr is created at runtime in my unit tests.
Using boost log in 1.64 this file is not there.

Missing example

Example folder cannot contain example with udp_socket_based for syslog_backend.

strong using is deprecated

$ gcc-7 --version
gcc-7 (Ubuntu 7.2.0-1ubuntu1~14.04) 7.2.0
In file included from ../../../boost/log/detail/custom_terminal_spec.hpp:25:0,
                 from core/custom_terminal.cpp:8:
../../../boost/log/detail/config.hpp:358:27: error: strong using is deprecated; use inline namespaces instead [-Werror=deprecated]
 __attribute__((__strong__))
                           ^
cc1plus: all warnings being treated as errors
    "g++-7"   -O3 -finline-functions -Wno-inline -Wall -Werror -pthread -fPIC -m64 -std=c++03  -DBOOST_ALL_NO_LIB=1 -DNDEBUG  -I"../../.." -c -o "../../../bin.v2/libs/phoenix/test/custom_terminal.test/gcc-gnu-7/release/cxxstd-03-iso/threadapi-pthread/threading-multi/core/custom_terminal.o" "core/custom_terminal.cpp"

Multiple threads need to send logs to rsyslog using boost-log

My application needs to create 1 syslog sink for each thread and each thread wants to send data independently.

class AlertsForSyslog
{
    string hostname;
	string message;
	src::severity_logger<> lg;
	boost::shared_ptr< sinks::synchronous_sink< sinks::syslog_backend > > sink;
    public :
    public :
	AlertsForSyslog(string hostname);
int sendMessageToSyslog(string message);
	void dd();
};

AlertsForSyslog::AlertsForSyslog(string hostname)
{
	this->hostname = hostname;
	sink = boost::make_shared<sinks::synchronous_sink< sinks::syslog_backend >>();
}

int AlertsForSyslog::sendMessageToSyslog(string message)
{
		this->message = message;
		sink->set_formatter
		(
			expr::format("%1%")
			%expr::smessage
		);

		sink->locked_backend()->set_target_address(hostname);

		
		// Add the sink to the core
		logging::core::get()->add_sink(sink);
		
	return 0;
}

	void AlertsForSyslog::dd()
	{
		BOOST_LOG_SEV(lg, sinks::syslog::alert) << message ;
	}

int main()
{
	cout << "hello";
	AlertsForSyslog n1 = AlertsForSyslog("172.16.72.239");
	n1.sendMessageToSyslog("from n1");
	AlertsForSyslog n2 = AlertsForSyslog("172.16.72.239");
	n2.sendMessageToSyslog("from n2");
	AlertsForSyslog n3 = AlertsForSyslog("172.16.72.239");
	n3.sendMessageToSyslog("from n3");
	n1.dd();
	n2.dd();
	n3.dd();
	return 0;
}

Above code gives me this output :

Apr  4 21:33:58 mypc from n1
Apr  4 21:33:58 mypc from n1
Apr  4 21:33:58 mypc from n1
Apr  4 21:33:58 mypc from n2
Apr  4 21:33:58 mypc from n2
Apr  4 21:33:58 mypc from n3
Apr  4 21:33:58 mypc from n3
Apr  4 21:33:58 mypc from n2
Apr  4 21:33:58 mypc from n3

But ideally it should be this right?

Apr  4 21:33:58 mypc from n1
Apr  4 21:33:58 mypc from n2
Apr  4 21:33:58 mypc from n3

How should I improve my code? I want to send logs using different threads on a remote syslog machine.

Allowing Boost.Log without RTTI

Hi. At the moment all of Boost subprojects (that we use) support non-RTTI builds, inlcuding Boost.TypeIndex and Boost.ProgramOptions. It would be nice to make all of them usable without RTTI support.

fails to compile with Clang on Windows

boost log fails to compile with Clang on WIndows

libs\log\src\timestamp.cpp:60:8: error: 'alignas' attribute cannot be applied to types
static BOOST_ALIGNMENT(BOOST_LOG_CPU_CACHE_LINE_SIZE) boost::atomic< uint64_t > g_ticks;
       ^
.\boost/config/detail/suffix.hpp:681:32: note: expanded from macro 'BOOST_ALIGNMENT'
#    define BOOST_ALIGNMENT(x) alignas(x)
                               ^
6 warnings and 1 error generated.

my user-config.jam

using clang : 5.0 :
 "C:/Program Files/LLVM/bin/clang.exe" :
 <compileflags>"-fmsc-version=1910 -DBOOST_USE_WINAPI_VERSION=0x0502 -DBOOST_USE_WINDOWS_H=1 -Wno-c++11-narrowing -D_WIN32_WINNT=0x0502 -DNOMINMAX"
 <ranlib>"C:/Program Files/LLVM/bin/llvm-ranlib.exe" 
 <archiver>"C:/Program Files/LLVM/bin/llvm-ar.exe" 
 <linkflags>-fuse-ld=lld ;

boost_log 1.67 can't compile on CentOS 5.0

Hello:
I try to compile boost_log on CentOS 5.0, but it show the error:

./boost/type_traits/is_class.hpp:51: warning: lowering visibility of ‘boost::type_traits::no_type boost::detail::is_class_tester(...) [with U = long long unsigned int]’ to match its type
/usr/include/linux/futex.h:96: error: ‘u32’ was not declared in this scope
/usr/include/linux/futex.h:96: error: ‘uaddr’ was not declared in this scope
/usr/include/linux/futex.h:96: error: expected primary-expression before ‘int’
/usr/include/linux/futex.h:96: error: ‘u32’ was not declared in this scope
/usr/include/linux/futex.h:96: error: expected primary-expression before ‘unsigned’
/usr/include/linux/futex.h:97: error: ‘u32’ was not declared in this scope
/usr/include/linux/futex.h:97: error: ‘uaddr2’ was not declared in this scope
/usr/include/linux/futex.h:97: error: ‘u32’ was not declared in this scope
/usr/include/linux/futex.h:97: error: ‘u32’ was not declared in this scope
/usr/include/linux/futex.h:97: error: initializer expression list treated as compound expression
/usr/include/linux/futex.h:100: error: ‘u32’ was not declared in this scope
/usr/include/linux/futex.h:100: error: ‘uaddr’ was not declared in this scope
/usr/include/linux/futex.h:100: error: expected primary-expression before ‘struct’
/usr/include/linux/futex.h:100: error: expected primary-expression before ‘int’
/usr/include/linux/futex.h:100: error: initializer expression list treated as compound expression
./boost/type_traits/is_class.hpp: In instantiation of ‘const bool boost::detail::is_class_impl<uint32_t>::value’:
./boost/type_traits/is_class.hpp:105: instantiated from ‘boost::is_class<uint32_t>’
./boost/type_traits/is_enum.hpp:44: instantiated from ‘const bool boost::detail::is_class_or_union<uint32_t>::value’
./boost/type_traits/is_enum.hpp:108: instantiated from ‘const bool boost::detail::is_enum_impl<uint32_t>::selector’

Does this version do not compatible with such an old CentOS ? or there has some way to avoid it ?

undefined reference to boost::log::v2_mt_posix

Like this issue issues/18.

I tried to solve this problem, but don't work.Also I found this from stackoverflow boost-logger-linking-issue. And still dont't work.

Platform: mac os 10.13.1
compiler: gcc version 4.9.4 (Homebrew GCC 4.9.4)

I installed boost 1.66.0 by this:

./bootstrap.sh --with-toolset=gcc --with-libraries=program_options,system,thread,regex,serialization,log,date_time

cmakelists:

set(REQUIRED_BOOST_LIBRARIES)
list(APPEND REQUIRED_BOOST_LIBRARIES "log_setup" "log" "serialization" "system" "filesystem" "date_time")
set(Boost_USE_MULTITHREADED ON)
find_package(Boost
COMPONENTS "${REQUIRED_BOOST_LIBRARIES}"
REQUIRED
)

Error

Undefined symbols for architecture x86_64:
"boost::log::v2s_mt_posix::attribute_name::get_id_from_string(char const*)", referenced from:
init_framework_logging(std::basic_string<char, std::char_traits, std::allocator > const&) in logger.cpp.o
"void boost::log::v2s_mt_posix::aux::put_integer(boost::log::v2s_mt_posix::aux::basic_ostringstreambuf<char, std::char_traits, std::allocator >&, unsigned int, unsigned int, char)", referenced from:
boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::format_fractional_seconds(boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::context&) in logger.cpp.o
boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::format_seconds(boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::context&) in logger.cpp.o
boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::format_minutes(boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::context&) in logger.cpp.o
void boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::format_hours_12<(char)32>(boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::context&) in logger.cpp.o
void boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::format_hours_12<(char)48>(boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::context&) in logger.cpp.o
void boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::format_hours<(char)32>(boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::context&) in logger.cpp.o
void boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::format_hours<(char)48>(boost::log::v2s_mt_posix::aux::date_time_formatter<boost::log::v2s_mt_posix::aux::decomposed_time_wrapperboost::posix_time::ptime, char>::context&) in logger.cpp.o
...
"boost::log::v2s_mt_posix::aux::this_thread::get_id()", referenced from:
boost::log::v2s_mt_posix::attributes::current_thread_id::impl::dispatch(boost::log::v2s_mt_posix::type_dispatcher&) in logger.cpp.o
boost::log::v2s_mt_posix::attributes::current_thread_id::impl::detach_from_thread() in logger.cpp.o
"boost::log::v2s_mt_posix::aux::this_process::get_id()", referenced from:
boost::log::v2s_mt_posix::add_common_attributes() in logger.cpp.o
"boost::log::v2s_mt_posix::aux::code_convert_impl(wchar_t const*, unsigned long, std::basic_string<char, std::char_traits, std::allocator >&, unsigned long, std::locale const&)", referenced from:
void boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >::aligned_write<wchar_t>(wchar_t const*, long) in logger.cpp.o
void boost::log::v2s_mt_posix::type_dispatcher::callback_base::trampoline<boost::log::v2s_mt_posix::binder1st<boost::log::v2s_mt_posix::output_fun, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >&>, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >(void*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&) in logger.cpp.o
"boost::log::v2s_mt_posix::aux::once_block_sentry::commit()", referenced from:
boost::array<std::pair<boost::typeindex::stl_type_index, void*>, 2ul> const& boost::log::v2s_mt_posix::aux::type_sequence_dispatcher<boost::mpl::vector2<std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::get_dispatching_map<boost::log::v2s_mt_posix::binder1st<boost::log::v2s_mt_posix::output_fun, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >&> >() in logger.cpp.o
"boost::log::v2s_mt_posix::aux::once_block_sentry::rollback()", referenced from:
boost::array<std::pair<boost::typeindex::stl_type_index, void*>, 2ul> const& boost::log::v2s_mt_posix::aux::type_sequence_dispatcher<boost::mpl::vector2<std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::get_dispatching_map<boost::log::v2s_mt_posix::binder1st<boost::log::v2s_mt_posix::output_fun, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >&> >() in logger.cpp.o
"void boost::log::v2s_mt_posix::aux::parse_date_time_format(char const*, char const*, boost::log::v2s_mt_posix::aux::date_time_format_parser_callback&)", referenced from:
init_framework_logging(std::basic_string<char, std::char_traits, std::allocator > const&) in logger.cpp.o
"boost::log::v2s_mt_posix::aux::default_attribute_names::process_id()", referenced from:
boost::log::v2s_mt_posix::add_common_attributes() in logger.cpp.o
"boost::log::v2s_mt_posix::aux::default_attribute_names::line_id()", referenced from:
boost::log::v2s_mt_posix::add_common_attributes() in logger.cpp.o
"boost::log::v2s_mt_posix::aux::default_attribute_names::message()", referenced from:
init_framework_logging(std::basic_string<char, std::char_traits, std::allocator > const&) in logger.cpp.o
boost::log::v2s_mt_posix::sinks::basic_formatting_sink_frontend::basic_formatting_sink_frontend(bool) in logger.cpp.o
"boost::log::v2s_mt_posix::aux::default_attribute_names::thread_id()", referenced from:
boost::log::v2s_mt_posix::add_common_attributes() in logger.cpp.o
"boost::log::v2s_mt_posix::aux::default_attribute_names::timestamp()", referenced from:
boost::log::v2s_mt_posix::add_common_attributes() in logger.cpp.o
"boost::log::v2s_mt_posix::aux::attach_attribute_name_info(boost::exception&, boost::log::v2s_mt_posix::attribute_name const&)", referenced from:
boost::log::v2s_mt_posix::aux::light_function<bool (boost::log::v2s_mt_posix::attribute_value_set const&)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::greater_equal, boost::proto::argsns_::list2<boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor>, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::termboost::log::v2s_mt_posix::trivial::severity_level, 0l> > >, 2l> > >::invoke_impl(void*, boost::log::v2s_mt_posix::attribute_value_set const&) in logger.cpp.o
boost::log::v2s_mt_posix::value_extractor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity>::operator()(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute_value_set const&) const in logger.cpp.o
boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > >::invoke_impl(void*, boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >) in logger.cpp.o
boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >)>::implboost::log::v2s_mt_posix::expressions::aux::message_formatter::invoke_impl(void*, boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >) in logger.cpp.o
"boost::log::v2s_mt_posix::core::set_filter(boost::log::v2s_mt_posix::filter const&)", referenced from:
init_framework_logging(std::basic_string<char, std::char_traits, std::allocator > const&) in logger.cpp.o
"boost::log::v2s_mt_posix::core::add_global_attribute(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute const&)", referenced from:
boost::log::v2s_mt_posix::add_common_attributes() in logger.cpp.o
"boost::log::v2s_mt_posix::core::get()", referenced from:
init_framework_logging(std::basic_string<char, std::char_traits, std::allocator > const&) in logger.cpp.o
boost::log::v2s_mt_posix::add_common_attributes() in logger.cpp.o
boost::shared_ptr<boost::log::v2s_mt_posix::sinks::synchronous_sinkboost::log::v2s_mt_posix::sinks::text_file_backend > boost::log::v2s_mt_posix::aux::add_file_log<boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::time_based_rotation, boost::log::v2s_mt_posix::sinks::file::rotation_at_time_point const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::rotation_size, int const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::auto_flush, bool const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::file_name, std::basic_string<char, std::char_traits, std::allocator > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::open_mode, std::Ios_Openmode const>, boost::parameter::aux::empty_arg_list> > > > > > >(boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::time_based_rotation, boost::log::v2s_mt_posix::sinks::file::rotation_at_time_point const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::rotation_size, int const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::auto_flush, bool const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::file_name, std::basic_string<char, std::char_traits, std::allocator > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::open_mode, std::Ios_Openmode const>, boost::parameter::aux::empty_arg_list> > > > > > const&) in logger.cpp.o
boost::shared_ptr<boost::log::v2s_mt_posix::sinks::synchronous_sink<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend > > boost::log::v2s_mt_posix::aux::add_console_log<char, boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns
::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const> >(std::basic_ostream<char, std::char_traits >&, boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const> const&) in logger.cpp.o
"boost::log::v2s_mt_posix::core::add_sink(boost::shared_ptrboost::log::v2s_mt_posix::sinks::sink const&)", referenced from:
boost::shared_ptr<boost::log::v2s_mt_posix::sinks::synchronous_sinkboost::log::v2s_mt_posix::sinks::text_file_backend > boost::log::v2s_mt_posix::aux::add_file_log<boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::time_based_rotation, boost::log::v2s_mt_posix::sinks::file::rotation_at_time_point const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::rotation_size, int const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::auto_flush, bool const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::file_name, std::basic_string<char, std::char_traits, std::allocator > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::open_mode, std::Ios_Openmode const>, boost::parameter::aux::empty_arg_list> > > > > > >(boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::time_based_rotation, boost::log::v2s_mt_posix::sinks::file::rotation_at_time_point const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::rotation_size, int const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::auto_flush, bool const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::file_name, std::basic_string<char, std::char_traits, std::allocator > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::open_mode, std::Ios_Openmode const>, boost::parameter::aux::empty_arg_list> > > > > > const&) in logger.cpp.o
boost::shared_ptr<boost::log::v2s_mt_posix::sinks::synchronous_sink<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend > > boost::log::v2s_mt_posix::aux::add_console_log<char, boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns
::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const> >(std::basic_ostream<char, std::char_traits >&, boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const> const&) in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::text_file_backend::flush()", referenced from:
boost::log::v2s_mt_posix::sinks::synchronous_sinkboost::log::v2s_mt_posix::sinks::text_file_backend::flush() in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::text_file_backend::consume(boost::log::v2s_mt_posix::record_view const&, std::basic_string<char, std::char_traits, std::allocator > const&)", referenced from:
boost::log::v2s_mt_posix::sinks::synchronous_sinkboost::log::v2s_mt_posix::sinks::text_file_backend::try_consume(boost::log::v2s_mt_posix::record_view const&) in logger.cpp.o
boost::log::v2s_mt_posix::sinks::synchronous_sinkboost::log::v2s_mt_posix::sinks::text_file_backend::consume(boost::log::v2s_mt_posix::record_view const&) in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::text_file_backend::construct(boost::filesystem::path const&, std::Ios_Openmode, unsigned long, boost::log::v2s_mt_posix::aux::light_function<bool ()> const&, bool, bool)", referenced from:
boost::detail::sp_if_not_arrayboost::log::v2s_mt_posix::sinks::text_file_backend::type boost::make_shared<boost::log::v2s_mt_posix::sinks::text_file_backend, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns
::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::time_based_rotation, boost::log::v2s_mt_posix::sinks::file::rotation_at_time_point const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::rotation_size, int const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::auto_flush, bool const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::file_name, std::basic_string<char, std::char_traits, std::allocator > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::open_mode, std::Ios_Openmode const>, boost::parameter::aux::empty_arg_list> > > > > > const&>(boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::time_based_rotation, boost::log::v2s_mt_posix::sinks::file::rotation_at_time_point const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::rotation_size, int const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::auto_flush, bool const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::file_name, std::basic_string<char, std::char_traits, std::allocator > const>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::open_mode, std::Ios_Openmode const>, boost::parameter::aux::empty_arg_list> > > > > > const&) in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::text_file_backend::~text_file_backend()", referenced from:
boost::detail::sp_counted_impl_pd<boost::log::v2s_mt_posix::sinks::text_file_backend*, boost::detail::sp_ms_deleterboost::log::v2s_mt_posix::sinks::text_file_backend >::~sp_counted_impl_pd() in logger.cpp.o
boost::detail::sp_counted_impl_pd<boost::log::v2s_mt_posix::sinks::text_file_backend*, boost::detail::sp_ms_deleterboost::log::v2s_mt_posix::sinks::text_file_backend >::~sp_counted_impl_pd() in logger.cpp.o
boost::detail::sp_counted_impl_pd<boost::log::v2s_mt_posix::sinks::text_file_backend*, boost::detail::sp_ms_deleterboost::log::v2s_mt_posix::sinks::text_file_backend >::dispose() in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend::add_stream(boost::shared_ptr<std::basic_ostream<char, std::char_traits > > const&)", referenced from:
boost::shared_ptr<boost::log::v2s_mt_posix::sinks::synchronous_sink<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend > > boost::log::v2s_mt_posix::aux::add_console_log<char, boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns
::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const> >(std::basic_ostream<char, std::char_traits >&, boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const> const&) in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend::auto_flush(bool)", referenced from:
boost::shared_ptr<boost::log::v2s_mt_posix::sinks::synchronous_sink<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend > > boost::log::v2s_mt_posix::aux::add_console_log<char, boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const> >(std::basic_ostream<char, std::char_traits >&, boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const> const&) in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend::flush()", referenced from:
boost::log::v2s_mt_posix::sinks::synchronous_sink<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend >::flush() in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend::consume(boost::log::v2s_mt_posix::record_view const&, std::basic_string<char, std::char_traits, std::allocator > const&)", referenced from:
boost::log::v2s_mt_posix::sinks::synchronous_sink<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend >::consume(boost::log::v2s_mt_posix::record_view const&) in logger.cpp.o
boost::log::v2s_mt_posix::sinks::synchronous_sink<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend >::try_consume(boost::log::v2s_mt_posix::record_view const&) in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend::basic_text_ostream_backend()", referenced from:
boost::detail::sp_if_not_array<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend >::type boost::make_shared<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend>() in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend::~basic_text_ostream_backend()", referenced from:
boost::detail::sp_counted_impl_pd<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend, boost::detail::sp_ms_deleter<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend > >::~sp_counted_impl_pd() in logger.cpp.o
boost::detail::sp_counted_impl_pd<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend
, boost::detail::sp_ms_deleter<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend > >::~sp_counted_impl_pd() in logger.cpp.o
boost::detail::sp_counted_impl_pd<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend, boost::detail::sp_ms_deleter<boost::log::v2s_mt_posix::sinks::basic_text_ostream_backend > >::dispose() in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::file::rotation_at_time_point::rotation_at_time_point(unsigned char, unsigned char, unsigned char)", referenced from:
init_framework_logging(std::basic_string<char, std::char_traits, std::allocator > const&) in logger.cpp.o
"boost::log::v2s_mt_posix::trivial::to_string(boost::log::v2s_mt_posix::trivial::severity_level)", referenced from:
boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > >::invoke_impl(void
, boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >) in logger.cpp.o
"boost::log::v2s_mt_posix::attribute::impl::operator delete(void*, unsigned long)", referenced from:
boost::log::v2s_mt_posix::attributes::basic_clockboost::log::v2s_mt_posix::attributes::local_time_traits::impl::~impl() in logger.cpp.o
boost::log::v2s_mt_posix::attributes::counter::impl::~impl() in logger.cpp.o
boost::log::v2s_mt_posix::attributes::attribute_value_implboost::posix_time::ptime::~attribute_value_impl() in logger.cpp.o
boost::log::v2s_mt_posix::attributes::attribute_value_impl::~attribute_value_impl() in logger.cpp.o
boost::log::v2s_mt_posix::attributes::current_thread_id::impl::~impl() in logger.cpp.o
boost::log::v2s_mt_posix::attributes::attribute_value_impl<boost::log::v2s_mt_posix::aux::idboost::log::v2s_mt_posix::aux::thread >::~attribute_value_impl() in logger.cpp.o
boost::log::v2s_mt_posix::attributes::attribute_value_impl<boost::log::v2s_mt_posix::aux::idboost::log::v2s_mt_posix::aux::process >::~attribute_value_impl() in logger.cpp.o
...
"boost::log::v2s_mt_posix::attribute::impl::operator new(unsigned long)", referenced from:
boost::log::v2s_mt_posix::attributes::current_thread_id::impl::detach_from_thread() in logger.cpp.o
boost::log::v2s_mt_posix::attributes::counter::impl::get_value() in logger.cpp.o
boost::log::v2s_mt_posix::add_common_attributes() in logger.cpp.o
boost::log::v2s_mt_posix::attributes::basic_clockboost::log::v2s_mt_posix::attributes::local_time_traits::impl::get_value() in logger.cpp.o
"boost::log::v2s_mt_posix::attribute_value_set::end() const", referenced from:
boost::log::v2s_mt_posix::aux::light_function<bool (boost::log::v2s_mt_posix::attribute_value_set const&)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::greater_equal, boost::proto::argsns_::list2<boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor>, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::termboost::log::v2s_mt_posix::trivial::severity_level, 0l> > >, 2l> > >::invoke_impl(void*, boost::log::v2s_mt_posix::attribute_value_set const&) in logger.cpp.o
boost::log::v2s_mt_posix::value_extractor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity>::operator()(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute_value_set const&) const in logger.cpp.o
boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > >::invoke_impl(void*, boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >) in logger.cpp.o
boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >)>::implboost::log::v2s_mt_posix::expressions::aux::message_formatter::invoke_impl(void*, boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >) in logger.cpp.o
"boost::log::v2s_mt_posix::attribute_value_set::find(boost::log::v2s_mt_posix::attribute_name) const", referenced from:
boost::log::v2s_mt_posix::aux::light_function<bool (boost::log::v2s_mt_posix::attribute_value_set const&)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::greater_equal, boost::proto::argsns_::list2<boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor>, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::termboost::log::v2s_mt_posix::trivial::severity_level, 0l> > >, 2l> > >::invoke_impl(void*, boost::log::v2s_mt_posix::attribute_value_set const&) in logger.cpp.o
boost::log::v2s_mt_posix::value_extractor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity>::operator()(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute_value_set const&) const in logger.cpp.o
boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::log::v2s_mt_posix::expressions::aux::attribute_output_terminal<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator >&, boost::posix_time::ptime const&)> > >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [4]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<boost::log::v2s_mt_posix::trivial::severity_level, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2s_mt_posix::expressions::attribute_actor<std::basic_string<char, std::char_traits, std::allocator >, boost::log::v2s_mt_posix::fallback_to_none, boost::log::v2s_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > >::invoke_impl(void*, boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >) in logger.cpp.o
boost::log::v2s_mt_posix::aux::light_function<void (boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >)>::implboost::log::v2s_mt_posix::expressions::aux::message_formatter::invoke_impl(void*, boost::log::v2s_mt_posix::record_view const&, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >) in logger.cpp.o
"boost::log::v2s_mt_posix::aux::once_block_sentry::enter_once_block() const", referenced from:
boost::array<std::pair<boost::typeindex::stl_type_index, void*>, 2ul> const& boost::log::v2s_mt_posix::aux::type_sequence_dispatcher<boost::mpl::vector2<std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >::get_dispatching_map<boost::log::v2s_mt_posix::binder1st<boost::log::v2s_mt_posix::output_fun, boost::log::v2s_mt_posix::expressions::aux::stream_ref<boost::log::v2s_mt_posix::basic_formatting_ostream<char, std::char_traits, std::allocator > >&> >() in logger.cpp.o
"boost::log::v2s_mt_posix::sinks::file::rotation_at_time_point::operator()() const", referenced from:
boost::log::v2s_mt_posix::aux::light_function<bool ()>::implboost::log::v2s_mt_posix::sinks::file::rotation_at_time_point::invoke_impl(void*) in logger.cpp.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

Error under msvc-8.0

The program

#include <boost/log/trivial.hpp>

int main()
{
    BOOST_LOG_TRIVIAL(info) << "An informational message";
}

under msvc-8.0 yields

1>c:\boost-git\develop\boost\parameter\aux_\arg_list.hpp(227) : error C2064: term does not evaluate to a function taking 1 arguments
1>        c:\boost-git\develop\boost\parameter\aux_\arg_list.hpp(390) : see reference to class template instantiation 'boost::parameter::aux::arg_list<TaggedArg,Next>' being compiled

No idea if anyone does, or ought to, care about msvc-8.0 at this point; I just came across this and thought I'd mention it.

Linking problem on Windows 10 x64 and boost 1.60

error has came after switching to boost 1.60
maybe related On Windows, the configuration macro BOOST_LOG_USE_WINNT6_API is no longer used by the library. The target Windows version should be configured by defining macro BOOST_USE_WINAPI_VERSION
it seems like it's using v2_mt_nt6

I'm using BOOST_LOG_DYN_LINK

But it's still not clear for me what is using that and how can I change it

I'm using BOOST_LOG_STREAM_SEV and boost::log::sources::severity_logger< boost::log::trivial::severity_level > lg;

full log:

Error   4   error LNK2019: unresolved external symbol "__declspec(dllimport) private: void __cdecl boost::log::v2_mt_nt6::core::push_record_move(class boost::log::v2_mt_nt6::record &)" (__imp_?push_record_move@core@v2_mt_nt6@log@boost@@AEAAXAEAVrecord@234@@Z) referenced in function "public: void __cdecl boost::log::v2_mt_nt6::core::push_record(class boost::log::v2_mt_nt6::record &&)" (?push_record@core@v2_mt_nt6@log@boost@@QEAAX$$QEAVrecord@234@@Z)    D:\D\SB\MITK-superbuild\MITK-build\Modules\SceneSerialization\mitkSceneIO.obj
Error   2   error LNK2019: unresolved external symbol "__declspec(dllimport) public: bool __cdecl boost::log::v2_mt_nt6::core::get_logging_enabled(void)const " (__imp_?get_logging_enabled@core@v2_mt_nt6@log@boost@@QEBA_NXZ) referenced in function "public: class boost::log::v2_mt_nt6::record __cdecl boost::log::v2_mt_nt6::sources::basic_composite_logger<char,class boost::log::v2_mt_nt6::sources::severity_logger<enum boost::log::v2_mt_nt6::trivial::severity_level>,struct boost::log::v2_mt_nt6::sources::single_thread_model,struct boost::log::v2_mt_nt6::sources::features<struct boost::log::v2_mt_nt6::sources::severity<enum boost::log::v2_mt_nt6::trivial::severity_level> > >::open_record<struct boost::parameter::aux::tagged_argument<struct boost::log::v2_mt_nt6::keywords::tag::severity,enum boost::log::v2_mt_nt6::trivial::severity_level const > >(struct boost::parameter::aux::tagged_argument<struct boost::log::v2_mt_nt6::keywords::tag::severity,enum boost::log::v2_mt_nt6::trivial::severity_level const > const &)" (??$open_record@U?$tagged_argument@Useverity@tag@keywords@v2_mt_nt6@log@boost@@$$CBW4severity_level@trivial@456@@aux@parameter@boost@@@?$basic_composite_logger@DV?$severity_logger@W4severity_level@trivial@v2_mt_nt6@log@boost@@@sources@v2_mt_nt6@log@boost@@Usingle_thread_model@2345@U?$features@U?$severity@W4severity_level@trivial@v2_mt_nt6@log@boost@@@sources@v2_mt_nt6@log@boost@@@2345@@sources@v2_mt_nt6@log@boost@@QEAA?AVrecord@234@AEBU?$tagged_argument@Useverity@tag@keywords@v2_mt_nt6@log@boost@@$$CBW4severity_level@trivial@456@@aux@parameter@4@@Z) D:\D\SB\MITK-superbuild\MITK-build\Modules\SceneSerialization\mitkSceneIO.obj
Error   3   error LNK2019: unresolved external symbol "__declspec(dllimport) public: class boost::log::v2_mt_nt6::record __cdecl boost::log::v2_mt_nt6::core::open_record(class boost::log::v2_mt_nt6::attribute_set const &)" (__imp_?open_record@core@v2_mt_nt6@log@boost@@QEAA?AVrecord@234@AEBVattribute_set@234@@Z) referenced in function "protected: class boost::log::v2_mt_nt6::record __cdecl boost::log::v2_mt_nt6::sources::basic_logger<char,class boost::log::v2_mt_nt6::sources::severity_logger<enum boost::log::v2_mt_nt6::trivial::severity_level>,struct boost::log::v2_mt_nt6::sources::single_thread_model>::open_record_unlocked<struct boost::parameter::aux::tagged_argument<struct boost::log::v2_mt_nt6::keywords::tag::severity,enum boost::log::v2_mt_nt6::trivial::severity_level const > >(struct boost::parameter::aux::tagged_argument<struct boost::log::v2_mt_nt6::keywords::tag::severity,enum boost::log::v2_mt_nt6::trivial::severity_level const > const &)" (??$open_record_unlocked@U?$tagged_argument@Useverity@tag@keywords@v2_mt_nt6@log@boost@@$$CBW4severity_level@trivial@456@@aux@parameter@boost@@@?$basic_logger@DV?$severity_logger@W4severity_level@trivial@v2_mt_nt6@log@boost@@@sources@v2_mt_nt6@log@boost@@Usingle_thread_model@2345@@sources@v2_mt_nt6@log@boost@@IEAA?AVrecord@234@AEBU?$tagged_argument@Useverity@tag@keywords@v2_mt_nt6@log@boost@@$$CBW4severity_level@trivial@456@@aux@parameter@4@@Z) D:\D\SB\MITK-superbuild\MITK-build\Modules\SceneSerialization\mitkSceneIO.obj
Error   7   error LNK2019: unresolved external symbol "__declspec(dllimport) public: class boost::shared_ptr<class boost::log::v2_mt_nt6::sinks::basic_text_ostream_backend<char> > __cdecl Logger::Log::getDataBackend(void)const " (__imp_?getDataBackend@Log@Logger@@QEBA?AV?$shared_ptr@V?$basic_text_ostream_backend@D@sinks@v2_mt_nt6@log@boost@@@boost@@XZ) referenced in function "public: virtual bool __cdecl mitk::SceneIO::SaveScene(class itk::SmartPointer<class itk::VectorContainer<unsigned int,class itk::SmartPointer<class mitk::DataNode> > const >,class mitk::DataStorage const *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?SaveScene@SceneIO@mitk@@UEAA_NV?$SmartPointer@$$CBV?$VectorContainer@IV?$SmartPointer@VDataNode@mitk@@@itk@@@itk@@@itk@@PEBVDataStorage@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) D:\D\SB\MITK-superbuild\MITK-build\Modules\SceneSerialization\mitkSceneIO.obj
Error   8   error LNK2019: unresolved external symbol "__declspec(dllimport) public: static struct boost::log::v2_mt_nt6::aux::stream_provider<char>::stream_compound * __cdecl boost::log::v2_mt_nt6::aux::stream_provider<char>::allocate_compound(class boost::log::v2_mt_nt6::record &)" (__imp_?allocate_compound@?$stream_provider@D@aux@v2_mt_nt6@log@boost@@SAPEAUstream_compound@12345@AEAVrecord@345@@Z) referenced in function "public: __cdecl boost::log::v2_mt_nt6::aux::record_pump<class boost::log::v2_mt_nt6::sources::severity_logger<enum boost::log::v2_mt_nt6::trivial::severity_level> >::record_pump<class boost::log::v2_mt_nt6::sources::severity_logger<enum boost::log::v2_mt_nt6::trivial::severity_level> >(class boost::log::v2_mt_nt6::sources::severity_logger<enum boost::log::v2_mt_nt6::trivial::severity_level> &,class boost::log::v2_mt_nt6::record &)" (??0?$record_pump@V?$severity_logger@W4severity_level@trivial@v2_mt_nt6@log@boost@@@sources@v2_mt_nt6@log@boost@@@aux@v2_mt_nt6@log@boost@@QEAA@AEAV?$severity_logger@W4severity_level@trivial@v2_mt_nt6@log@boost@@@sources@234@AEAVrecord@234@@Z)  D:\D\SB\MITK-superbuild\MITK-build\Modules\SceneSerialization\mitkSceneIO.obj
Error   9   error LNK2019: unresolved external symbol "__declspec(dllimport) public: static void __cdecl boost::log::v2_mt_nt6::aux::stream_provider<char>::release_compound(struct boost::log::v2_mt_nt6::aux::stream_provider<char>::stream_compound *)" (__imp_?release_compound@?$stream_provider@D@aux@v2_mt_nt6@log@boost@@SAXPEAUstream_compound@12345@@Z) referenced in function "public: __cdecl boost::log::v2_mt_nt6::aux::record_pump<class boost::log::v2_mt_nt6::sources::severity_logger<enum boost::log::v2_mt_nt6::trivial::severity_level> >::auto_release::~auto_release(void)" (??1auto_release@?$record_pump@V?$severity_logger@W4severity_level@trivial@v2_mt_nt6@log@boost@@@sources@v2_mt_nt6@log@boost@@@aux@v2_mt_nt6@log@boost@@QEAA@XZ) D:\D\SB\MITK-superbuild\MITK-build\Modules\SceneSerialization\mitkSceneIO.obj
Error   1   error LNK2019: unresolved external symbol "__declspec(dllimport) public: static void __cdecl boost::log::v2_mt_nt6::record_view::public_data::destroy(struct boost::log::v2_mt_nt6::record_view::public_data const *)" (__imp_?destroy@public_data@record_view@v2_mt_nt6@log@boost@@SAXPEBU12345@@Z) referenced in function "public: void __cdecl boost::log::v2_mt_nt6::record::reset(void)" (?reset@record@v2_mt_nt6@log@boost@@QEAAXXZ)  D:\D\SB\MITK-superbuild\MITK-build\Modules\SceneSerialization\mitkSceneIO.obj
Error   5   error LNK2019: unresolved external symbol "__declspec(dllimport) unsigned __int64 & __cdecl boost::log::v2_mt_nt6::sources::aux::get_severity_level(void)" (__imp_?get_severity_level@aux@sources@v2_mt_nt6@log@boost@@YAAEA_KXZ) referenced in function "public: void __cdecl boost::log::v2_mt_nt6::sources::aux::severity_level<enum boost::log::v2_mt_nt6::trivial::severity_level>::set_value(enum boost::log::v2_mt_nt6::trivial::severity_level)" (?set_value@?$severity_level@W40trivial@v2_mt_nt6@log@boost@@@aux@sources@v2_mt_nt6@log@boost@@QEAAXW4severity_level@trivial@456@@Z)   D:\D\SB\MITK-superbuild\MITK-build\Modules\SceneSerialization\mitkSceneIO.obj
Error   6   error LNK2019: unresolved external symbol "__declspec(dllimport) unsigned int __cdecl boost::log::v2_mt_nt6::aux::unhandled_exception_count(void)" (__imp_?unhandled_exception_count@aux@v2_mt_nt6@log@boost@@YAIXZ) referenced in function "public: __cdecl boost::log::v2_mt_nt6::aux::record_pump<class boost::log::v2_mt_nt6::sources::severity_logger<enum boost::log::v2_mt_nt6::trivial::severity_level> >::record_pump<class boost::log::v2_mt_nt6::sources::severity_logger<enum boost::log::v2_mt_nt6::trivial::severity_level> >(class boost::log::v2_mt_nt6::sources::severity_logger<enum boost::log::v2_mt_nt6::trivial::severity_level> &,class boost::log::v2_mt_nt6::record &)" (??0?$record_pump@V?$severity_logger@W4severity_level@trivial@v2_mt_nt6@log@boost@@@sources@v2_mt_nt6@log@boost@@@aux@v2_mt_nt6@log@boost@@QEAA@AEAV?$severity_logger@W4severity_level@trivial@v2_mt_nt6@log@boost@@@sources@234@AEAVrecord@234@@Z)    D:\D\SB\MITK-superbuild\MITK-build\Modules\SceneSerialization\mitkSceneIO.obj

Rotating log files -- the wrong files are being deleted

I am using boost 1.66.0. I am using the rotating logger from my c++ application (which runs on windows).

I have configured a rotating logger to keep no more than 50 log files. I assumed it would delete the oldest log files in the folder to make room for the new ones, but that is not what happens.

When my folder contains around 49 log files and my application is started, it begins to write the 50th file as expected. After a while, there are enough logs to roll into new files. When I come back and look at the log files, I discover that the first 49 log files are still there. (These are the files that existed before my application was started.)

Also I will see 1 or 2 of the most recent log files, but I am missing the log files that were written when the application was started. Presumably the limit of 50 (or 51) files is being enforced, but the wrong files are being deleted. It is deleting the oldest files that were written after the application was started; it is not deleting log files that existed before the application was started.

For your reference, here is the code where I configure my logger.

// maximum number of stored files
#define MAX_LOG_FILES 50

// maximum file size of rotated file.
#define MAX_LOG_FILE_SIZE 16*1024*1024

// maximum total size of the stored files, in bytes
#define MAX_LOG_BYTES_TOTAL MAX_LOG_FILES*1024*1024

// minimum free space on the drive, in bytes
#define MIN_LOG_DRIVE_SPACE 4*MAX_LOG_BYTES_TOTAL


PanErr __cdecl Logger::initialize(
    _In_ const boost::filesystem::path& logFolder,
    _In_ const LogLevel consoleThreshold,
    _In_ const LogLevel fileThreshold)
{
    using namespace boost::log;

    PanErr err = PanErr::ok;

    std::unique_lock<std::mutex> lock(m_initializationMutex);

    //  Undo any prior initialization
    this->dispose();

    //  Hold a pointer to the core in order to prevent possible problems with order of destruction.
    m_boostLoggingCore = boost::log::core::get();

    // Store the log folder.
    m_logFolder = logFolder;

    // Compute the log-level threshold across both sinks.
    m_threshold = (consoleThreshold < fileThreshold) ? consoleThreshold : fileThreshold;

    // Construct the console sink.
    m_consoleSink = boost::shared_ptr<BoostConsoleSink>(new BoostConsoleSink);

    try
    {
        // Pipe to std::clog.
        m_consoleSink->locked_backend()->add_stream(
            boost::shared_ptr<std::ostream>(&std::clog, boost::null_deleter()));

        // The format of each log line is like this.
        m_consoleSink->set_formatter
        (
            expressions::format("%1% %2% %3% %4%:%5% %6%")
            % expressions::format_date_time<boost::posix_time::ptime>(
                TimestampKeyword.get_name(), "%y-%m-%dT%H:%M:%S.%f")
            % LevelKeyword
            % CategoryKeyword
            % FileKeyword
            % LineKeyword
            % MessageKeyword
        );

        // Set the console threshold.
        m_consoleSink->set_filter(expressions::attr<LogLevel>(LevelKeyword.get_name()) >= consoleThreshold);

        // Construct the file sink.
        m_fileSink = boost::shared_ptr<BoostFileSink>(new BoostFileSink(
            keywords::file_name = (logFolder / "%Y-%m-%d_%H-%M-%S_%5N.log").string(),  // file name pattern
            keywords::rotation_size = MAX_LOG_FILE_SIZE                                // rotation size, in characters
        ));

        // Set up where the rotated files will be stored.
        m_fileSink->locked_backend()->set_file_collector(sinks::file::make_collector(
            keywords::target = logFolder,                       // where to store rotated files (doesn't actually work)
            keywords::max_size = MAX_LOG_BYTES_TOTAL,           // maximum total size of the stored files, in bytes
            keywords::min_free_space = MIN_LOG_DRIVE_SPACE,     // minimum free space on the drive, in bytes
            keywords::max_files = MAX_LOG_FILES                 // maximum number of stored files
        ));
        
        // In the boost examples, keywords::target (above) is supposed to designate the log folder but it doesn't
        // seem to work.  The only thing that worked was to set keywords::file_name (above) to an absolute folder path.

        // Upon restart, scan the target directory for files matching the file_name pattern.
        m_fileSink->locked_backend()->scan_for_files();

        // The format of each log line is like this.
        m_fileSink->set_formatter
        (
            expressions::format("%1% %2% %3% %4%:%5% %6%")
            % expressions::format_date_time<boost::posix_time::ptime>(
                TimestampKeyword.get_name(), "%Y-%m-%d %H:%M:%S.%f")
            % LevelKeyword
            % CategoryKeyword
            % FileKeyword
            % LineKeyword
            % MessageKeyword
        );

        // Set the threshold.
        m_fileSink->set_filter(expressions::attr<LogLevel>(LevelKeyword.get_name()) >= fileThreshold);

        // Add sinks to the core.
        m_boostLoggingCore->add_sink(m_consoleSink);
        m_boostLoggingCore->add_sink(m_fileSink);

        // Indicate that the logger has been initialized.
        m_initialized = true;
    }
    catch (std::exception& ex)
    {
        err = PanErr::fail;
        std::cout <<  "ERROR  Failed to initialize logging system:" << std::endl << ex.what() << std::endl;
    }

Cleanup:
    return err;
}

Log does not respect BOOST_LOG_BUILD_DLL

Hi,

While all (almost all?) boost libs respect definition BOOST_ + libname + _BUILD_DLL when building shared library itself, boost.log uses it own BOOST_LOG_DLL definition to say we're compiling a shared library.
See https://github.com/boostorg/log/blob/develop/include/boost/log/detail/config.hpp#L252 and other occurences of BOOST_LOG_DLL.

For reference see boost.thread https://github.com/boostorg/thread/blob/develop/include/boost/thread/detail/config.hpp#L402

Is it possible to fix this to use common boost behavior?
It will be useful in custom (not b2) boost builds like in my case.

Boost log log_number do not reset when using rotation_at_time_point

Hi guys i'm using boost log for rotation by day and file size, i also set max log size store in logdir
my log file are :
log_2018-02-20_000.log
log_2018-02-20_001.log
log_2018-02-20_002.log
log_2018-02-21_003.log
log_2018-02-21_004.log

How to reset log file number to zero when new day come ? of course i'm still need log max_size limit
something like :
log_2018-02-20_000.log
log_2018-02-20_001.log
log_2018-02-20_002.log
log_2018-02-21_000.log
log_2018-02-21_001.log

Here is my code

` log_file_path = LOGS_PATH + L"/log_%Y-%m-%d_%3N.log";

	sink = boost::log::add_file_log
	(
		keywords::file_name = log_file_path,
		keywords::rotation_size = LOG_ROTATION_SIZE * 1024 * 1024,
		keywords::time_based_rotation = sinks::file::rotation_at_time_point(0, 0, 0), /*< ...or at midnight >*/
		keywords::format = log_format,
		keywords::filter = boost::log::trivial::severity >= level && (expr::has_attr(a_channel) && a_channel == LOG_NAME),
		//keywords::open_mode = std::ios::app,
		//keywords::scan_method = boost::log::sinks::file::scan_matching,
		keywords::auto_flush = true,
		keywords::target = LOGS_PATH,
		keywords::channel = LOG_NAME



	);

    std::locale loc = boost::locale::generator()("ja_JP.UTF-8");
sink->imbue(loc);
boost::log::add_common_attributes();
if (LOG_MAX_SIZE > 0) {

	sink->locked_backend()->set_file_collector(sinks::file::make_collector(
		keywords::target = LOGS_PATH,
		keywords::max_size = LOG_MAX_SIZE * 1024 * 1024
		//,keywords::min_free_space = 100 * 1024 * 1024,
		//keywords::max_files = 512
	));
}

`

1.59 basic_formatting_ostream breaks on boost::format objects

The operator<< overloads will fail to find a result for basic_format<char, std::char_traits, std::allocator>

Please advise/provide a patch - I believe this might work but I do not have time to muck around this week on this

basic_formatting_ostream& operator<< (boost::basic_format< char_type, traits_type >* formatter)
{
    m_stream << buf;
    return *this;
}

Non-static thread_specific_ptr in core leads to crashes when unloading logging library

We've got an extremely large, dynamic environment where we might decide to unload a component (a set of shared libraries). After unloading a component that included Boost.Log (i.e. Boost.Log got unloaded along with application code), we're often seeing a crash from the Boost.Thread library (which remains resident). The problem appears to be that boost::log::core::implementation contains a non-static instance of thread_specific_ptr: m_thread_data.

Instances of thread_specific_ptr install cleanup functions into Boost.Thread; these cleanup functions are called when threads exit. Destroying an instance of thread_specific_ptr removes the cleanup functions so they are not called in the future.

We cannot guarantee that the singleton instance of boost::log::core::implementation is destroyed before Boost.Log gets unloaded. (We do go to fairly heroic lengths to ensure that sinks, attributes, etc. that may have been installed are all removed.) If Boost.Log gets unloaded without destroying the core singleton, Boost.Thread is left holding a dangling cleanup function pointer for m_thread_data. This results in a crash the next time any thread in the process exits.

Since the core is a singleton and thread_specific_ptr is ... per thread ... , there is no need for this to be a regular member variable. It could be a static member. (And in fact the related m_thread_data_cache that's used when compiler TLS is enabled is declared static.) If m_thread_data was declared static, it would be destructed at the time Boost.Log was unloaded, and there would be no dangling cleanup function in Boost.Thread.

I've verified that the following simple patch has resolved all of the remaining crashes we've observed during our unloading stress test. If this is a reasonable solution, I'm happy to submit as a pull request.

@@ -271,7 +271,7 @@
     attribute_set m_global_attributes;
 #if !defined(BOOST_LOG_NO_THREADS)
     //! Thread-specific data
-    thread_specific_ptr< thread_data > m_thread_data;
+    static thread_specific_ptr< thread_data > m_thread_data;
 
 #if defined(BOOST_LOG_USE_COMPILER_TLS)
     //! Cached pointer to the thread-specific data
@@ -465,6 +465,11 @@
     }
 };
 
+#if !defined(BOOST_LOG_NO_THREADS)
+//! Thread-specific data
+thread_specific_ptr< core::implementation::thread_data > core::implementation::m_thread_data;
+#endif
+
 #if defined(BOOST_LOG_USE_COMPILER_TLS)
 //! Cached pointer to the thread-specific data
 BOOST_LOG_TLS core::implementation::thread_data* core::implementation::m_thread_data_cache = NULL;

The file name rule for daily rotate log?

I posted a thread on stackoverflow few months ago, no one answered it. It's not very urgent since it is only log file name so I just left it.

Recently I noticed that the changelog of 1.66.0 said it has been fixed.

For me I still have some issues about the file name. I can see some log file names after I upgrade boost to 1.66.0 just like it behaves in 1.65.1.

Here's the code:

logging::wsettings settings;
settings["Core"]["Filter"] = L"%Severity% >= debug";
settings["Core"]["DisableLogging"] = false;
settings["Sinks.File"]["Destination"] = L"TextFile";
settings["Sinks.File"]["FileName"] = L"App_%Y-%m-%d.%N.log";
settings["Sinks.File"]["Format"] = L"%TimeStamp% [%ThreadID%] %Severity(format=\"%-7s\")% - %Message%";
settings["Sinks.File"]["AutoFlush"] = true;
settings["Sinks.File"]["RotationTimePoint"] = L"00:00:00";
settings["Sinks.File"]["RotationSize"] = 10 * 1024 * 1024;
settings["Sinks.File"]["Target"] = filePath_;
settings["Sinks.File"]["ScanForFiles"] = L"All";
settings["Sinks.File"]["Append"] = true;

Here's some log file examples:

App_2018-01-09.7.log
App_2018-01-10.8.log
App_2018-01-10.0.log
App_2018-01-11.1.log
App_2018-01-11.0.log
(Sorted by creation time ASC)

My understanding is that the counter and date-time part are unrelated, the counter increases whenever a new file is being created. Is my understanding correct?

But this makes the file names confusing. For example:

  1. Start app on 2018-01-11, then the file name is App_2018-01-11.0.log
  2. A new filename will be created as App_2018-01-12.1.log tomorrow
  3. If I restart app tomorrow, then a new filename created as App_2018-01-12.0.log

Is this the current behavior?
If so, my suggestion is to reset the file counter for a new day like this:

  1. Start app on 2018-01-11, then the file name is App_2018-01-11.0.log
  2. A new filename created as App_2018-01-12.0.log tomorrow
  3. If I restart app tomorrow, then a new filename will be created as App_2018-01-12.0.log
  4. If the file becomes too large, then the file counter will be increased when creating new file name.

Does this make sense?

Boost Log will not compile on Android

Version 1.62.0 will not compile on android due to the fact that the android bionic runtime does not have a getsid function. This is referenced at https://github.com/boostorg/log/blob/boost-1.62.0/src/posix/object_name.cpp#L71

I am willing to work up a PR and submit it - but am wondering what the best approach to do for android would be. Should I #ifndef just the format_id call there - and use something else instead of getsid? Or should I #ifndef the access to object_name::session altogether so that scope isn't even available? Or is there some other approach that would be better (I don't believe there is an alternative to getsid on android - you just aren't allowed to access it at all).

Build error

Build of boost log included into boost 1.63.0 with gcc 4.9.2 fails.
Boost build config:

using gcc
        : cxx11
        : "/work/bin/g++"
        : <compileflags>"-m64 -Wall -O3 -fPIC" <cxxflags>"-std=gnu++11" <linkflags>"-static-libgcc -static-libstdc++"

b2 invocation:

./b2 toolset=gcc-cxx11

Error message:

gcc.compile.c++ bin.v2/libs/log/build/gcc-cxx11/release/link-static/threading-multi/dump_avx2.o
/tmp/ccGl5frD.s: Assembler messages:
/tmp/ccGl5frD.s:395: Error: suffix or operands invalid for vpsrlw' /tmp/ccGl5frD.s:396: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:397: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:398: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccGl5frD.s:399: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:400: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccGl5frD.s:401: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:402: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:403: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:404: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:405: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:406: Error: suffix or operands invalid for vpunpcklbw'
/tmp/ccGl5frD.s:407: Error: suffix or operands invalid for vpunpckhbw' /tmp/ccGl5frD.s:408: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:409: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:410: Error: suffix or operands invalid for vpalignr'
/tmp/ccGl5frD.s:411: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:412: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:414: Error: no such instruction: vextracti128 $0x1,%ymm2,-48(%rax)' /tmp/ccGl5frD.s:415: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:416: Error: no such instruction: vextracti128 $0x1,%ymm1,-16(%rax)' /tmp/ccGl5frD.s:418: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:420: Error: no such instruction: vextracti128 $0x1,%ymm0,-32(%rax)' /tmp/ccGl5frD.s:466: Error: suffix or operands invalid for vpsrlw'
/tmp/ccGl5frD.s:468: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:470: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:472: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:473: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:474: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:475: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:476: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:477: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:479: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:480: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:481: Error: suffix or operands invalid for vpunpcklbw' /tmp/ccGl5frD.s:482: Error: suffix or operands invalid for vpunpckhbw'
/tmp/ccGl5frD.s:483: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:484: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:485: Error: suffix or operands invalid for vpalignr' /tmp/ccGl5frD.s:486: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:487: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:489: Error: no such instruction: vextracti128 $0x1,%ymm2,48(%r13)'
/tmp/ccGl5frD.s:490: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:491: Error: no such instruction: vextracti128 $0x1,%ymm1,80(%r13)'
/tmp/ccGl5frD.s:492: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:495: Error: no such instruction: vextracti128 $0x1,%ymm0,64(%r13)'
/tmp/ccGl5frD.s:543: Error: no such instruction: vinserti128 $0x1,%xmm1,%ymm0,%ymm1' /tmp/ccGl5frD.s:544: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:545: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:546: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:547: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:548: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:550: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:551: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccGl5frD.s:552: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:553: Error: no such instruction: vextracti128 $0x1,%ymm1,-16(%r13)'
/tmp/ccGl5frD.s:702: Error: suffix or operands invalid for vpsrlw' /tmp/ccGl5frD.s:703: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:704: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:705: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccGl5frD.s:706: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:707: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccGl5frD.s:708: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:709: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:710: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:711: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:712: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:713: Error: suffix or operands invalid for vpunpcklbw'
/tmp/ccGl5frD.s:714: Error: suffix or operands invalid for vpunpckhbw' /tmp/ccGl5frD.s:715: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:716: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:717: Error: suffix or operands invalid for vpalignr'
/tmp/ccGl5frD.s:718: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:719: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:721: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2' /tmp/ccGl5frD.s:722: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:723: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:725: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:727: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:730: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1'
/tmp/ccGl5frD.s:732: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:734: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:737: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0' /tmp/ccGl5frD.s:739: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:741: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:744: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:746: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:749: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:751: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:754: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:756: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:801: Error: suffix or operands invalid for vpsrlw'
/tmp/ccGl5frD.s:803: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:805: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:807: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:808: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:809: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:810: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:811: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:812: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:814: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:815: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:816: Error: suffix or operands invalid for vpunpcklbw' /tmp/ccGl5frD.s:817: Error: suffix or operands invalid for vpunpckhbw'
/tmp/ccGl5frD.s:818: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:819: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:820: Error: suffix or operands invalid for vpalignr' /tmp/ccGl5frD.s:821: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:822: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:824: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2'
/tmp/ccGl5frD.s:825: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:826: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:828: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:830: Error: no such instruction: vextracti128 $0x1,%ymm3,16(%r13)'
/tmp/ccGl5frD.s:831: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:833: Error: no such instruction: vextracti128 $0x1,%ymm3,48(%r13)'
/tmp/ccGl5frD.s:835: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1' /tmp/ccGl5frD.s:837: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:839: Error: no such instruction: vextracti128 $0x1,%ymm3,80(%r13)' /tmp/ccGl5frD.s:840: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:842: Error: no such instruction: vextracti128 $0x1,%ymm3,112(%r13)' /tmp/ccGl5frD.s:844: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccGl5frD.s:846: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:848: Error: no such instruction: vextracti128 $0x1,%ymm3,144(%r13)'
/tmp/ccGl5frD.s:849: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:851: Error: no such instruction: vextracti128 $0x1,%ymm3,176(%r13)'
/tmp/ccGl5frD.s:853: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:855: Error: no such instruction: vextracti128 $0x1,%ymm2,208(%r13)'
/tmp/ccGl5frD.s:856: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:858: Error: no such instruction: vextracti128 $0x1,%ymm2,240(%r13)'
/tmp/ccGl5frD.s:860: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:862: Error: no such instruction: vextracti128 $0x1,%ymm1,272(%r13)'
/tmp/ccGl5frD.s:863: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:865: Error: no such instruction: vextracti128 $0x1,%ymm1,304(%r13)'
/tmp/ccGl5frD.s:867: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:869: Error: no such instruction: vextracti128 $0x1,%ymm0,336(%r13)'
/tmp/ccGl5frD.s:870: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:872: Error: no such instruction: vextracti128 $0x1,%ymm0,368(%r13)'
/tmp/ccGl5frD.s:913: Error: no such instruction: vinserti128 $0x1,%xmm1,%ymm0,%ymm1' /tmp/ccGl5frD.s:914: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:915: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:916: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:917: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:918: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:920: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:921: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccGl5frD.s:922: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:927: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:928: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1' /tmp/ccGl5frD.s:931: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:934: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:936: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:939: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:940: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:1771: Error: suffix or operands invalid for vpsrlw' /tmp/ccGl5frD.s:1772: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:1773: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:1774: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccGl5frD.s:1775: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:1776: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccGl5frD.s:1777: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:1778: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:1779: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:1780: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:1781: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:1782: Error: suffix or operands invalid for vpunpcklbw'
/tmp/ccGl5frD.s:1783: Error: suffix or operands invalid for vpunpckhbw' /tmp/ccGl5frD.s:1784: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:1785: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:1786: Error: suffix or operands invalid for vpalignr'
/tmp/ccGl5frD.s:1787: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:1788: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:1790: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1' /tmp/ccGl5frD.s:1791: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:1792: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:1793: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:1794: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:1798: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm1'
/tmp/ccGl5frD.s:1799: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:1800: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm0'
/tmp/ccGl5frD.s:1803: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:1804: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccGl5frD.s:1805: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:1852: Error: suffix or operands invalid for vpsrlw'
/tmp/ccGl5frD.s:1854: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:1856: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:1858: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:1859: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:1860: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:1861: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:1862: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:1863: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:1865: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:1866: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:1867: Error: suffix or operands invalid for vpunpcklbw' /tmp/ccGl5frD.s:1868: Error: suffix or operands invalid for vpunpckhbw'
/tmp/ccGl5frD.s:1869: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:1870: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:1871: Error: suffix or operands invalid for vpalignr' /tmp/ccGl5frD.s:1872: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:1873: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:1875: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2'
/tmp/ccGl5frD.s:1876: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:1877: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccGl5frD.s:1878: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:1879: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccGl5frD.s:1881: Error: no such instruction: vextracti128 $0x1,%ymm3,16(%r13)' /tmp/ccGl5frD.s:1883: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccGl5frD.s:1885: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:1886: Error: no such instruction: vextracti128 $0x1,%ymm2,112(%r13)'
/tmp/ccGl5frD.s:1887: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:1889: Error: no such instruction: vextracti128 $0x1,%ymm0,144(%r13)'
/tmp/ccGl5frD.s:1891: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm0' /tmp/ccGl5frD.s:1892: Error: no such instruction: vextracti128 $0x1,%ymm3,48(%r13)'
/tmp/ccGl5frD.s:1894: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:1895: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccGl5frD.s:1897: Error: no such instruction: vextracti128 $0x1,%ymm3,80(%r13)' /tmp/ccGl5frD.s:1899: Error: no such instruction: vextracti128 $0x1,%ymm0,176(%r13)'
/tmp/ccGl5frD.s:1940: Error: no such instruction: vinserti128 $0x1,%xmm1,%ymm0,%ymm1' /tmp/ccGl5frD.s:1941: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:1942: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:1943: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:1944: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:1945: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:1947: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:1948: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccGl5frD.s:1949: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:1953: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1'
/tmp/ccGl5frD.s:1955: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:1956: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccGl5frD.s:1958: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccGl5frD.s:2621: Error: suffix or operands invalid for vpsrlw'
/tmp/ccGl5frD.s:2622: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:2623: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:2624: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:2625: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:2626: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccGl5frD.s:2627: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:2628: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:2629: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:2630: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:2631: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:2632: Error: suffix or operands invalid for vpunpcklbw' /tmp/ccGl5frD.s:2633: Error: suffix or operands invalid for vpunpckhbw'
/tmp/ccGl5frD.s:2634: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:2635: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:2636: Error: suffix or operands invalid for vpalignr' /tmp/ccGl5frD.s:2637: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:2638: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:2640: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2'
/tmp/ccGl5frD.s:2641: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:2642: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:2644: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2646: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2649: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1' /tmp/ccGl5frD.s:2651: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2653: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2656: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccGl5frD.s:2658: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2660: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2663: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2665: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2668: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2670: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2673: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2675: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2720: Error: suffix or operands invalid for vpsrlw' /tmp/ccGl5frD.s:2722: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:2724: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:2726: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccGl5frD.s:2727: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:2728: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccGl5frD.s:2729: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:2730: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:2731: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:2733: Error: suffix or operands invalid for vpaddb'
/tmp/ccGl5frD.s:2734: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:2735: Error: suffix or operands invalid for vpunpcklbw'
/tmp/ccGl5frD.s:2736: Error: suffix or operands invalid for vpunpckhbw' /tmp/ccGl5frD.s:2737: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:2738: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:2739: Error: suffix or operands invalid for vpalignr'
/tmp/ccGl5frD.s:2740: Error: suffix or operands invalid for vpshufb' /tmp/ccGl5frD.s:2741: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:2743: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2' /tmp/ccGl5frD.s:2744: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:2745: Error: suffix or operands invalid for vpmaxub' /tmp/ccGl5frD.s:2747: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2749: Error: no such instruction: vextracti128 $0x1,%ymm3,16(%r13)' /tmp/ccGl5frD.s:2750: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2752: Error: no such instruction: vextracti128 $0x1,%ymm3,48(%r13)' /tmp/ccGl5frD.s:2754: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1'
/tmp/ccGl5frD.s:2756: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2758: Error: no such instruction: vextracti128 $0x1,%ymm3,80(%r13)'
/tmp/ccGl5frD.s:2759: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2761: Error: no such instruction: vextracti128 $0x1,%ymm3,112(%r13)'
/tmp/ccGl5frD.s:2763: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0' /tmp/ccGl5frD.s:2765: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2767: Error: no such instruction: vextracti128 $0x1,%ymm3,144(%r13)' /tmp/ccGl5frD.s:2768: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2770: Error: no such instruction: vextracti128 $0x1,%ymm3,176(%r13)' /tmp/ccGl5frD.s:2772: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2774: Error: no such instruction: vextracti128 $0x1,%ymm2,208(%r13)' /tmp/ccGl5frD.s:2775: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2777: Error: no such instruction: vextracti128 $0x1,%ymm2,240(%r13)' /tmp/ccGl5frD.s:2779: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2781: Error: no such instruction: vextracti128 $0x1,%ymm1,272(%r13)' /tmp/ccGl5frD.s:2782: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2784: Error: no such instruction: vextracti128 $0x1,%ymm1,304(%r13)' /tmp/ccGl5frD.s:2786: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2788: Error: no such instruction: vextracti128 $0x1,%ymm0,336(%r13)' /tmp/ccGl5frD.s:2789: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2791: Error: no such instruction: vextracti128 $0x1,%ymm0,368(%r13)' /tmp/ccGl5frD.s:2832: Error: no such instruction: vinserti128 $0x1,%xmm1,%ymm0,%ymm1'
/tmp/ccGl5frD.s:2833: Error: suffix or operands invalid for vpand' /tmp/ccGl5frD.s:2834: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccGl5frD.s:2835: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:2836: Error: suffix or operands invalid for vpand'
/tmp/ccGl5frD.s:2837: Error: suffix or operands invalid for vpaddb' /tmp/ccGl5frD.s:2839: Error: suffix or operands invalid for vpshufb'
/tmp/ccGl5frD.s:2840: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0' /tmp/ccGl5frD.s:2841: Error: suffix or operands invalid for vpmaxub'
/tmp/ccGl5frD.s:2846: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2847: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1'
/tmp/ccGl5frD.s:2850: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2853: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2855: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccGl5frD.s:2858: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccGl5frD.s:2859: Error: suffix or operands invalid for `vpmovzxbd'

"/work/bin/g++"  -ftemplate-depth-128 -std=gnu++11 -O3 -finline-functions -Wno-inline -Wall -m64 -Wall -O3 -fPIC -pthread -m64 -fno-strict-aliasing -ftemplate-depth-1024 -fvisibility=hidden -mavx -mavx2 -fabi-version=0 -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_STATIC_LINK=1 -DBOOST_CHRONO_STATIC_LINK=1 -DBOOST_FILESYSTEM_STATIC_LINK=1 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_HAS_PTHREAD_MUTEX_ROBUST -DBOOST_LOG_USE_NATIVE_SYSLOG -DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB=1 -DDATE_TIME_INLINE -DNDEBUG -D_XOPEN_SOURCE=600 -D__STDC_CONSTANT_MACROS  -I"." -I"libs/log/src" -c -o "bin.v2/libs/log/build/gcc-cxx11/release/link-static/threading-multi/dump_avx2.o" "libs/log/src/dump_avx2.cpp"

...failed gcc.compile.c++ bin.v2/libs/log/build/gcc-cxx11/release/link-static/threading-multi/dump_avx2.o...
...skipped <pbin.v2/libs/log/build/gcc-cxx11/release/link-static/threading-multi>libboost_log.a(clean) for lack of <pbin.v2/libs/log/build/gcc-cxx11/release/link-static/threading-multi>dump_avx2.o...
...skipped <pbin.v2/libs/log/build/gcc-cxx11/release/link-static/threading-multi>libboost_log.a for lack of <pbin.v2/libs/log/build/gcc-cxx11/release/link-static/threading-multi>dump_avx2.o...
...skipped <pstage/lib>libboost_log.a for lack of <pbin.v2/libs/log/build/gcc-cxx11/release/link-static/threading-multi>libboost_log.a...
gcc.compile.c++ bin.v2/libs/log/build/gcc-cxx11/release/threading-multi/dump_avx2.o
/tmp/ccjZXH2u.s: Assembler messages:
/tmp/ccjZXH2u.s:395: Error: suffix or operands invalid for vpsrlw' /tmp/ccjZXH2u.s:396: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:397: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:398: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccjZXH2u.s:399: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:400: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccjZXH2u.s:401: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:402: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:403: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:404: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:405: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:406: Error: suffix or operands invalid for vpunpcklbw'
/tmp/ccjZXH2u.s:407: Error: suffix or operands invalid for vpunpckhbw' /tmp/ccjZXH2u.s:408: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:409: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:410: Error: suffix or operands invalid for vpalignr'
/tmp/ccjZXH2u.s:411: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:412: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:414: Error: no such instruction: vextracti128 $0x1,%ymm2,-48(%rax)' /tmp/ccjZXH2u.s:415: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:416: Error: no such instruction: vextracti128 $0x1,%ymm1,-16(%rax)' /tmp/ccjZXH2u.s:418: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:420: Error: no such instruction: vextracti128 $0x1,%ymm0,-32(%rax)' /tmp/ccjZXH2u.s:466: Error: suffix or operands invalid for vpsrlw'
/tmp/ccjZXH2u.s:468: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:470: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:472: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:473: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:474: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:475: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:476: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:477: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:479: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:480: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:481: Error: suffix or operands invalid for vpunpcklbw' /tmp/ccjZXH2u.s:482: Error: suffix or operands invalid for vpunpckhbw'
/tmp/ccjZXH2u.s:483: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:484: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:485: Error: suffix or operands invalid for vpalignr' /tmp/ccjZXH2u.s:486: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:487: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:489: Error: no such instruction: vextracti128 $0x1,%ymm2,48(%r13)'
/tmp/ccjZXH2u.s:490: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:491: Error: no such instruction: vextracti128 $0x1,%ymm1,80(%r13)'
/tmp/ccjZXH2u.s:492: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:495: Error: no such instruction: vextracti128 $0x1,%ymm0,64(%r13)'
/tmp/ccjZXH2u.s:543: Error: no such instruction: vinserti128 $0x1,%xmm1,%ymm0,%ymm1' /tmp/ccjZXH2u.s:544: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:545: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:546: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:547: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:548: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:550: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:551: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccjZXH2u.s:552: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:553: Error: no such instruction: vextracti128 $0x1,%ymm1,-16(%r13)'
/tmp/ccjZXH2u.s:702: Error: suffix or operands invalid for vpsrlw' /tmp/ccjZXH2u.s:703: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:704: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:705: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccjZXH2u.s:706: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:707: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccjZXH2u.s:708: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:709: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:710: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:711: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:712: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:713: Error: suffix or operands invalid for vpunpcklbw'
/tmp/ccjZXH2u.s:714: Error: suffix or operands invalid for vpunpckhbw' /tmp/ccjZXH2u.s:715: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:716: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:717: Error: suffix or operands invalid for vpalignr'
/tmp/ccjZXH2u.s:718: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:719: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:721: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2' /tmp/ccjZXH2u.s:722: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:723: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:725: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:727: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:730: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1'
/tmp/ccjZXH2u.s:732: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:734: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:737: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0' /tmp/ccjZXH2u.s:739: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:741: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:744: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:746: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:749: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:751: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:754: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:756: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:801: Error: suffix or operands invalid for vpsrlw'
/tmp/ccjZXH2u.s:803: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:805: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:807: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:808: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:809: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:810: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:811: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:812: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:814: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:815: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:816: Error: suffix or operands invalid for vpunpcklbw' /tmp/ccjZXH2u.s:817: Error: suffix or operands invalid for vpunpckhbw'
/tmp/ccjZXH2u.s:818: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:819: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:820: Error: suffix or operands invalid for vpalignr' /tmp/ccjZXH2u.s:821: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:822: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:824: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2'
/tmp/ccjZXH2u.s:825: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:826: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:828: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:830: Error: no such instruction: vextracti128 $0x1,%ymm3,16(%r13)'
/tmp/ccjZXH2u.s:831: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:833: Error: no such instruction: vextracti128 $0x1,%ymm3,48(%r13)'
/tmp/ccjZXH2u.s:835: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1' /tmp/ccjZXH2u.s:837: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:839: Error: no such instruction: vextracti128 $0x1,%ymm3,80(%r13)' /tmp/ccjZXH2u.s:840: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:842: Error: no such instruction: vextracti128 $0x1,%ymm3,112(%r13)' /tmp/ccjZXH2u.s:844: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccjZXH2u.s:846: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:848: Error: no such instruction: vextracti128 $0x1,%ymm3,144(%r13)'
/tmp/ccjZXH2u.s:849: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:851: Error: no such instruction: vextracti128 $0x1,%ymm3,176(%r13)'
/tmp/ccjZXH2u.s:853: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:855: Error: no such instruction: vextracti128 $0x1,%ymm2,208(%r13)'
/tmp/ccjZXH2u.s:856: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:858: Error: no such instruction: vextracti128 $0x1,%ymm2,240(%r13)'
/tmp/ccjZXH2u.s:860: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:862: Error: no such instruction: vextracti128 $0x1,%ymm1,272(%r13)'
/tmp/ccjZXH2u.s:863: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:865: Error: no such instruction: vextracti128 $0x1,%ymm1,304(%r13)'
/tmp/ccjZXH2u.s:867: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:869: Error: no such instruction: vextracti128 $0x1,%ymm0,336(%r13)'
/tmp/ccjZXH2u.s:870: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:872: Error: no such instruction: vextracti128 $0x1,%ymm0,368(%r13)'
/tmp/ccjZXH2u.s:913: Error: no such instruction: vinserti128 $0x1,%xmm1,%ymm0,%ymm1' /tmp/ccjZXH2u.s:914: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:915: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:916: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:917: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:918: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:920: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:921: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccjZXH2u.s:922: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:927: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:928: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1' /tmp/ccjZXH2u.s:931: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:934: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:936: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:939: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:940: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:1771: Error: suffix or operands invalid for vpsrlw' /tmp/ccjZXH2u.s:1772: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:1773: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:1774: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccjZXH2u.s:1775: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:1776: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccjZXH2u.s:1777: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:1778: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:1779: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:1780: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:1781: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:1782: Error: suffix or operands invalid for vpunpcklbw'
/tmp/ccjZXH2u.s:1783: Error: suffix or operands invalid for vpunpckhbw' /tmp/ccjZXH2u.s:1784: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:1785: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:1786: Error: suffix or operands invalid for vpalignr'
/tmp/ccjZXH2u.s:1787: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:1788: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:1790: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1' /tmp/ccjZXH2u.s:1791: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:1792: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:1793: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:1794: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:1798: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm1'
/tmp/ccjZXH2u.s:1799: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:1800: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm0'
/tmp/ccjZXH2u.s:1803: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:1804: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccjZXH2u.s:1805: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:1852: Error: suffix or operands invalid for vpsrlw'
/tmp/ccjZXH2u.s:1854: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:1856: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:1858: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:1859: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:1860: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:1861: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:1862: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:1863: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:1865: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:1866: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:1867: Error: suffix or operands invalid for vpunpcklbw' /tmp/ccjZXH2u.s:1868: Error: suffix or operands invalid for vpunpckhbw'
/tmp/ccjZXH2u.s:1869: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:1870: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:1871: Error: suffix or operands invalid for vpalignr' /tmp/ccjZXH2u.s:1872: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:1873: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:1875: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2'
/tmp/ccjZXH2u.s:1876: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:1877: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccjZXH2u.s:1878: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:1879: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccjZXH2u.s:1881: Error: no such instruction: vextracti128 $0x1,%ymm3,16(%r13)' /tmp/ccjZXH2u.s:1883: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccjZXH2u.s:1885: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:1886: Error: no such instruction: vextracti128 $0x1,%ymm2,112(%r13)'
/tmp/ccjZXH2u.s:1887: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:1889: Error: no such instruction: vextracti128 $0x1,%ymm0,144(%r13)'
/tmp/ccjZXH2u.s:1891: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm0' /tmp/ccjZXH2u.s:1892: Error: no such instruction: vextracti128 $0x1,%ymm3,48(%r13)'
/tmp/ccjZXH2u.s:1894: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:1895: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccjZXH2u.s:1897: Error: no such instruction: vextracti128 $0x1,%ymm3,80(%r13)' /tmp/ccjZXH2u.s:1899: Error: no such instruction: vextracti128 $0x1,%ymm0,176(%r13)'
/tmp/ccjZXH2u.s:1940: Error: no such instruction: vinserti128 $0x1,%xmm1,%ymm0,%ymm1' /tmp/ccjZXH2u.s:1941: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:1942: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:1943: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:1944: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:1945: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:1947: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:1948: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccjZXH2u.s:1949: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:1953: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1'
/tmp/ccjZXH2u.s:1955: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:1956: Error: suffix or operands invalid for vpmovzxbw'
/tmp/ccjZXH2u.s:1958: Error: suffix or operands invalid for vpmovzxbw' /tmp/ccjZXH2u.s:2621: Error: suffix or operands invalid for vpsrlw'
/tmp/ccjZXH2u.s:2622: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:2623: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:2624: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:2625: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:2626: Error: suffix or operands invalid for vpcmpgtb' /tmp/ccjZXH2u.s:2627: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:2628: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:2629: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:2630: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:2631: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:2632: Error: suffix or operands invalid for vpunpcklbw' /tmp/ccjZXH2u.s:2633: Error: suffix or operands invalid for vpunpckhbw'
/tmp/ccjZXH2u.s:2634: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:2635: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:2636: Error: suffix or operands invalid for vpalignr' /tmp/ccjZXH2u.s:2637: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:2638: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:2640: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2'
/tmp/ccjZXH2u.s:2641: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:2642: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:2644: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2646: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2649: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1' /tmp/ccjZXH2u.s:2651: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2653: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2656: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0'
/tmp/ccjZXH2u.s:2658: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2660: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2663: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2665: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2668: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2670: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2673: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2675: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2720: Error: suffix or operands invalid for vpsrlw' /tmp/ccjZXH2u.s:2722: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:2724: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:2726: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccjZXH2u.s:2727: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:2728: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccjZXH2u.s:2729: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:2730: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:2731: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:2733: Error: suffix or operands invalid for vpaddb'
/tmp/ccjZXH2u.s:2734: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:2735: Error: suffix or operands invalid for vpunpcklbw'
/tmp/ccjZXH2u.s:2736: Error: suffix or operands invalid for vpunpckhbw' /tmp/ccjZXH2u.s:2737: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:2738: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:2739: Error: suffix or operands invalid for vpalignr'
/tmp/ccjZXH2u.s:2740: Error: suffix or operands invalid for vpshufb' /tmp/ccjZXH2u.s:2741: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:2743: Error: no such instruction: vextracti128 $0x1,%ymm2,%xmm2' /tmp/ccjZXH2u.s:2744: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:2745: Error: suffix or operands invalid for vpmaxub' /tmp/ccjZXH2u.s:2747: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2749: Error: no such instruction: vextracti128 $0x1,%ymm3,16(%r13)' /tmp/ccjZXH2u.s:2750: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2752: Error: no such instruction: vextracti128 $0x1,%ymm3,48(%r13)' /tmp/ccjZXH2u.s:2754: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1'
/tmp/ccjZXH2u.s:2756: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2758: Error: no such instruction: vextracti128 $0x1,%ymm3,80(%r13)'
/tmp/ccjZXH2u.s:2759: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2761: Error: no such instruction: vextracti128 $0x1,%ymm3,112(%r13)'
/tmp/ccjZXH2u.s:2763: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0' /tmp/ccjZXH2u.s:2765: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2767: Error: no such instruction: vextracti128 $0x1,%ymm3,144(%r13)' /tmp/ccjZXH2u.s:2768: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2770: Error: no such instruction: vextracti128 $0x1,%ymm3,176(%r13)' /tmp/ccjZXH2u.s:2772: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2774: Error: no such instruction: vextracti128 $0x1,%ymm2,208(%r13)' /tmp/ccjZXH2u.s:2775: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2777: Error: no such instruction: vextracti128 $0x1,%ymm2,240(%r13)' /tmp/ccjZXH2u.s:2779: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2781: Error: no such instruction: vextracti128 $0x1,%ymm1,272(%r13)' /tmp/ccjZXH2u.s:2782: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2784: Error: no such instruction: vextracti128 $0x1,%ymm1,304(%r13)' /tmp/ccjZXH2u.s:2786: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2788: Error: no such instruction: vextracti128 $0x1,%ymm0,336(%r13)' /tmp/ccjZXH2u.s:2789: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2791: Error: no such instruction: vextracti128 $0x1,%ymm0,368(%r13)' /tmp/ccjZXH2u.s:2832: Error: no such instruction: vinserti128 $0x1,%xmm1,%ymm0,%ymm1'
/tmp/ccjZXH2u.s:2833: Error: suffix or operands invalid for vpand' /tmp/ccjZXH2u.s:2834: Error: suffix or operands invalid for vpcmpgtb'
/tmp/ccjZXH2u.s:2835: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:2836: Error: suffix or operands invalid for vpand'
/tmp/ccjZXH2u.s:2837: Error: suffix or operands invalid for vpaddb' /tmp/ccjZXH2u.s:2839: Error: suffix or operands invalid for vpshufb'
/tmp/ccjZXH2u.s:2840: Error: no such instruction: vextracti128 $0x1,%ymm0,%xmm0' /tmp/ccjZXH2u.s:2841: Error: suffix or operands invalid for vpmaxub'
/tmp/ccjZXH2u.s:2846: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2847: Error: no such instruction: vextracti128 $0x1,%ymm1,%xmm1'
/tmp/ccjZXH2u.s:2850: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2853: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2855: Error: suffix or operands invalid for vpmovzxbd' /tmp/ccjZXH2u.s:2858: Error: suffix or operands invalid for vpmovzxbd'
/tmp/ccjZXH2u.s:2859: Error: suffix or operands invalid for `vpmovzxbd'

"/work/bin/g++"  -ftemplate-depth-128 -std=gnu++11 -O3 -finline-functions -Wno-inline -Wall -m64 -Wall -O3 -fPIC -pthread -fPIC -m64 -fno-strict-aliasing -ftemplate-depth-1024 -fvisibility=hidden -mavx -mavx2 -fabi-version=0 -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_DLL -DBOOST_LOG_HAS_PTHREAD_MUTEX_ROBUST -DBOOST_LOG_USE_NATIVE_SYSLOG -DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DNDEBUG -D_XOPEN_SOURCE=600 -D__STDC_CONSTANT_MACROS  -I"." -I"libs/log/src" -c -o "bin.v2/libs/log/build/gcc-cxx11/release/threading-multi/dump_avx2.o" "libs/log/src/dump_avx2.cpp"

...failed gcc.compile.c++ bin.v2/libs/log/build/gcc-cxx11/release/threading-multi/dump_avx2.o...
...skipped <pbin.v2/libs/log/build/gcc-cxx11/release/threading-multi>libboost_log.so.1.63.0 for lack of <pbin.v2/libs/log/build/gcc-cxx11/release/threading-multi>dump_avx2.o...
...skipped <pstage/lib>libboost_log.so.1.63.0 for lack of <pbin.v2/libs/log/build/gcc-cxx11/release/threading-multi>libboost_log.so.1.63.0...
...skipped <pstage/lib>libboost_log.so for lack of <pstage/lib>libboost_log.so.1.63.0...
...skipped <pbin.v2/libs/log/build/gcc-cxx11/release/threading-multi>libboost_log_setup.so.1.63.0 for lack of <pbin.v2/libs/log/build/gcc-cxx11/release/threading-multi>libboost_log.so.1.63.0...
...skipped <pstage/lib>libboost_log_setup.so.1.63.0 for lack of <pbin.v2/libs/log/build/gcc-cxx11/release/threading-multi>libboost_log_setup.so.1.63.0...
...skipped <pstage/lib>libboost_log_setup.so for lack of <pstage/lib>libboost_log_setup.so.1.63.0...
...failed updating 2 targets...
...skipped 9 targets...

get_current_file_name missing during compilation

I am testing upgrading from boost 1.64 to 1.67 and I am getting a compilation error under GCC 5.4:

error: 'boost::log::v2s_mt_posix::aux::locking_ptr<boost::log::v2s_mt_posix::sinks::text_file_backend, boost::recursive_mutex>::element_type {aka class boost::log::v2s_mt_posix::sinks::text_file_backend}' has no member named 'get_current_file_name'

It doesn't really make sense to me because using the rotate_file() function and some others works fine, and they are defined in the same class. I thought it was a precompile/obj issue so I cleaned out the entire project and recompiled but that did not fix it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.