
5 Nov
2013
5 Nov
'13
9:19 p.m.
Hi, In the tutorial here: http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/tutorial/formatters.html There is a link to this example: http://www.boost.org/doc/libs/1_54_0/libs/log/example/doc/tutorial_fmt_format.cpp Which I can compile fine like this: g++ -DBOOST_ALL_DYN_LINK -Lboost-trunk155beta_inst/lib/ -lboost_system -lboost_log -lboost_filesystem -lboost_thread -I boost-trunk155beta_inst/include/ boost_log_format.cpp Could start from that? cheers, Johan 2013/11/5 Víctor Yo <rcpoetics@gmail.com> > Hi ewveryone, > > I'm working lately with Boost.Log (I'm a newbie) library and I want to > write a logger with some parameters and formatting options. I followed the > documentation, I created a backend and a frontend and I tried to format the > output in the frontend with the set_formatter() function. I tried with the > Lambda style and with the Boost.Format style but I'm getting an error that > I can not locate. Iwas working on it for the last two whole days but I > couldn't find a solution. It is related with the basic_formatting_ostream, > but I don't understand what that means. I defined the backend and attached > to it two streams (to a file and to cout) > > > typedef boost::log::sinks::text_ostream_backend our_backend; > typedef boost::log::sinks::synchronous_sink<our_backend> > our_frontend; > > > //............................................................................................................................................ > > boost::shared_ptr<our_backend> backend = > boost::make_shared<our_backend>(); > //Stream definitions > boost::shared_ptr<std::ostream> stream_out(&std::cout, > boost::log::empty_deleter()); > boost::shared_ptr<std::ostream> stream_file(new > std::ofstream("file_logger.log")); > backend -> add_stream(stream_out); > backend -> add_stream(stream_file); > > Created the frontend (and wrapping the backend to it) > > //Wrap the backend into the frontend and register in the core. > //The frontend provides synchronization for the backend. > boost::shared_ptr<our_frontend> frontend(new our_frontend(backend)); > > And now come the offending code which is supposed to format the output > (note that the first commented block was my first try). None of them works > and the error is the same in both cases: > > */*frontend -> set_formatter* > * (* > * boost::log::expressions::format("[%1%] %2%, File: %3%, > Line: %4% <%5%>: %6% ")* > * % boost::log::attributes::counter< unsigned int > >(1)* > * % boost::log::attributes::local_clock()* > * % boost::log::expressions::attr< severity_level > >("Severity")* > * % boost::log::expressions::message* > * );*/* > > //We are going to define the formatter in a different style to try > to get formatted output > frontend -> set_formatter > ( > boost::log::expressions::stream > << boost::log::attributes::counter< unsigned int >(1) > <<" ["<< boost::log::attributes::local_clock() > <<"] <"<< boost::log::expressions::attr< severity_level >("Severity") > <<"> "<< boost::log::expressions::message > ); > > The error I get is the next one: > > */home/victor/Programacion/workspace/opice/build-parallel/../libs/include/boost/log/utility/formatting_ostream.hpp:664:5: > error: no match for ‘operator<<’ in ‘(& > strm)->boost::log::v2_mt_posix::basic_formatting_ostream<CharT, TraitsT, > AllocatorT>::stream [with CharT = char, TraitsT = std::char_traits<char>, > AllocatorT = std::allocator<char>, > boost::log::v2_mt_posix::basic_formatting_ostream<CharT, TraitsT, > AllocatorT>::ostream_type = std::basic_ostream<char>]() << value’* > > And I really don't know what is happening. I also included a lot of files > (I'm sure I included too much files, indeed) to be sure it was not caused > by some undefined operator or something similar. However I still have the > same problem. The includes are: > > #include <iostream> > #include <fstream> > #include <string> > > #include <boost/thread/shared_mutex.hpp> > > #include <boost/log/core.hpp> > #include <boost/log/common.hpp> > #include <boost/make_shared.hpp> > #include <boost/log/expressions.hpp> > > #include <boost/log/utility/setup/file.hpp> > #include <boost/log/utility/setup/console.hpp> //puede ser innecesario > #include <boost/log/utility/setup/common_attributes.hpp> //puede > ser innecesario > #include <boost/log/utility/empty_deleter.hpp> > > #include<boost/thread/mutex.hpp> > #include <boost/log/attributes/timer.hpp> > #include <boost/log/attributes/mutable_constant.hpp> > #include <boost/log/sources/severity_logger.hpp> > #include <boost/log/utility/formatting_ostream.hpp> > > #include <boost/log/sinks/text_ostream_backend.hpp> > #include <boost/log/sinks/sync_frontend.hpp> > > #include <boost/log/support/date_time.hpp> > > As you can see, they are probably redundant or innecessary but I could rip > off that files when I could get the program compiled. Now, I'm out of ideas > so any help you could bring me should be very appreciated. Thank you in > advance. > > Victor Hevia > > _______________________________________________ > Boost-users mailing list > Boost-users@lists.boost.org > http://lists.boost.org/mailman/listinfo.cgi/boost-users >