|
Boost Users : |
Subject: Re: [Boost-users] [Log] Error with operator<< in basic_formatting_ostream
From: VÃctor Yo (rcpoetics_at_[hidden])
Date: 2013-11-06 02:36:03
Thank you Johan. I have read that documentation before. Anyway, I
discovered that one of the problems I had is that I need to use formatters
types asociated with the variables (or objects) I want to use in the log,
but I was using the variable types instead. I'm working on it and when I
have everything working, I will post the changes here for future reference.
I think I have it under control :D Thank you!
El martes, 5 de noviembre de 2013 22:19:58 UTC+1, Johan Lundberg escribió:
>
> 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 <rcpo..._at_[hidden] <javascript:>>
>
>> 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..._at_[hidden] <javascript:>
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>>
>
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net