Boost logo

Boost :

Subject: Re: [boost] [Log] Review Results
From: Roland Bock (rbock_at_[hidden])
Date: 2010-03-11 05:04:16


Andrey Semashev wrote:
>> Is there a way to have several sinks with different filter but
>> sharing the log records?
>
> That's an interesting idea, not very simple to implement though. The
> problem is that some records can pass filtering for some of the sinks
> and not the others, while the sinks may share the formatter. Further on,
> formatting of the same log record for different sinks may occur in
> different threads. I'll add this feature to the TODO list, I need some
> time to think about it.

I understand that it is difficult in all generality. Since it is an
optimization, maybe it could be implemented for certain cases only? For
instance restrict it to sinks which live in the same thread?

>> The parsing is based on Boost.Spirit (classic) and takes 20 minutes
>> to compile on my maschine (Ubuntu-8.04 64bit, gcc-4.2.4, Intel Quad
>> Core, 2.5GHz)
>
> I suppose, it's because of the old compiler. On my setup (GCC 4.4, Intel
> dual core, 3GHz) the whole library builds in about 1.5 minutes, in a
> single thread. I'll see what I can do about it. Hopefully, the switch to
> Spirit 2 will help.

OK, good to know! I am hoping to update to 4.4, too. In the meantime, I
hope for Spirit2 :-)

>> We strive for code that compiles without warnings, but with
>> boost.log, I get tons of warnings. What I have seen so far should
>> be easy to get rid of. But I will not be able to use the
>> boost.log library unless the warnings are taken care of.
>
> I'm using GCC 4.4 and don't get any warnings. Could you send your build
> log? Perhaps, off list, if it's too heavy.

The warnings for the code attached to the original posting are attached
to this mail. Compile options are:

-Wall -Wreorder -Wnon-virtual-dtor -Wno-non-template-friend
-Woverloaded-virtual -Wsign-promo -Wextra -fvisibility=hidden

There is a ticket for the date_time stuff, already. Currently I have to
fix that by hand with each release...

> I can't see a way to detect such errors on an earlier stage, because
> filters, formatters and loggers are unrelated. Also, it's difficult to
> perform this kind of check because the setup may still be valid even if
> not all attributes are present in the core and/or loggers. One can use
> scoped attributes to temporarily add attributes. Moreover, some
> attributes may be required by particular sinks.

Hmm. Well for my purposes, I could log a "Log Setup completed" message.
If that crashes, no real harm is done.

> If you don't want exceptions to be thrown, you can use things like
> flt::has_attr, std::nothrow in filters/formatters and exception handlers.

I don't mind exceptions. The main issue from my point of view is: No
critical message must be lost. If I log a message I want to be pretty
sure that it is logged somehow. If the sinks fail and exceptions are
thrown, currently, the message is lost. It would be unreasonable for me
to add a try/catch statement to each log statement.

Maybe the message could be added to the exception? Or maybe the user
could provide a callback that would be called in case of an exception?

Not sure now, but messages must not be lost by the log system.

> It's never too flexible. :) Really, there will always be someone who
> wants that little thing work a bit differently.

OK, we don't share the same philosophy here :-)

Flexibility is good, of course. But like everything else, it can be
overdone. I am not saying that this is the case already for Boost.Log,
but in my personal opinion it is pretty close, at least.

With each and every new way of doing the same stuff as before, it is
becoming harder to test, to document and (for users) to find someone to
explain what they are doing wrong.

Just my 2cents.

> String templates are described here:
>
> http://tinyurl.com/ylxeblv
>
> But I'll add a reference in the section about formatters.

OK, that would be good. Personally, I never know when to look at the
Utility section, so maybe more of such references could be added.

> Trivial is the usage pattern, the implementation may not be trivial
> (although, it is quite simple, as for me).

OK, well something like this is not trivial:

flt::attr< logging::trivial::severity_level >("Severity") >=
logging::trivial::info

It is not very complex, but trivial? Wouldn't say so. But I certainly do
not insist on a different name :-)

>> Documentation:
>> ==============
>>
>> I admit that I got lost on the last few pages, but was probably due to
>> me not actually experimenting with all of it.
>
> Can you point me to the particular sections that were difficult to read?

Examples with a short explanation, why I think I had difficulties.

- core: cite: [This section contains a more detailed description of
library components and features. Some of them are presented in the
Tutorial section...]
This may be one of the main reasons for me to have some trouble. When I
wrote that mini test program, I found myself continuously jumping from
tutorial to details and back again.

- sink_frontends:
A mini summary with mini sample code would be helpful as introduction:
What do I do with sink frontends?

Construct
Add filters
Add backends
Add attributes? <-- can I ?
Hand over to core

- utility: The init_log_to_file convenience function is mentioned in
examples several times but never with a pointer to the utility section.
The missing links to other sections might be a reason for me not to have
really read the utility section. In fact I did not think I'd need it.

> I don't think adding namespaces and includes to examples in the readable
> documentation is a good idea. As you noted, these examples should be
> brief and free of such noise. However, I will reorganize the docs, so
> that the code samples will be taken from compilable external files.

Oh, I did not mean to include the "noise". No the examples are fine per
se. But it would be very helpful to have a link to a complete/compiling
sample program at the end of each tutorial section.

>> Missing Documentation:
>> - Not all include files are mentioned. This makes it unnecessarily
>> tough to follow the examples.
>> For instance, boost/log/utility/empty_deleter.hpp is required to
>> use logging::empty_deleter. I could not find this information in
>> all of the turorial and details.
>> Another, maybe even more critical example: The BOOST_LOG macro
>> is defined in boost/log/sources/record_ostream.hpp
>> Again I did not find that information in the tutorial.
>
> Yes, these small bits fell out of my scope. If only it was possible to
> generate the reference both header-based (like it is now) and
> content-based...

Well, aside from all the remarks I made about problems with the
documentation, let me say: It is pretty good already!

>> - I understand that I can use my own set of severity levels. It is
>> well documented how to filter messages using these severity levels.
>> But I have no idea how to format messages with these severity
>> levels? I do not want the number, I'd like a string, of course.
>> I looked it up in the trivial.hpp, but it should be part of
>> the documentation.
>
> It is described in the formatters section:
>
> http://tinyurl.com/yh3r7ue
>
> All you have to do is to define operator<<. The approach is also
> demonstrated in examples.

OK, would be cool to have a pointer to that section from here, for instance:
http://boost-log.sourceforge.net/libs/log/doc/html/log/tutorial/attributes.html#log.tutorial.attributes.commonly_used_attributes

>> - Maybe I missed it, but I did not find an overview of the log
>> rotation options, including a description of the placeholders in
>> strings.
>
> http://tinyurl.com/ygpxtgc

That link seems to be damaged. It did not forward me to the real
destination.

>> Specific question: Can I tell the log rotation to take place at
>> midnight (regardless of the amount of data which is being logged)?
>
> No, you currently cannot specify a specific time point of rotation, but
> you can specify the rotation period. I've been requested to support time
> point rotation, so I'll implement it some time.

Our administrators would really appreciate that :-)

>> I would like to stress this last item one more time: The examples are
>> excellent, but they should be accompanied by more formal tables which
>> show the complete set of options, e.g. which placeholders can be used in
>> a filename format or a list of public (protected?) member functions of a
>> logger. For instance, I found the logger::strm() member in examples only.
>
> The functions and their arguments (including named ones) are described
> in the Reference section. That is the formal interface description. The
> more expanded description with code samples in the Detailed features
> description. If you found inconsistencies or something missing in
> particular, I'll be glad to fix it.

OK, maybe it would be sufficient to add links into the reference section?

My problem is that I often found myself in the situation described above
(difficulties): I am not sure if I have all the information I need. And
I am not sure how to find out. Brief introductions with usage patterns
in the detail-section would help a lot, I guess.

Regards,

Roland


[ 0%] Creating "revision.c" if necessary
Warning: svnversion returned 'exported'
/home/rbock/metafeed/sources/trunk/sources/LibLogger: (Not a versioned resource)

Unchanged revision information, not touching revision.[ch]
[ 33%] Built target revision
[ 66%] Building CXX object tests/CMakeFiles/Test.dir/test.o
In file included from /home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/local_time/conversion.hpp:13,
                 from /home/rbock/metafeed/binaries/boost/1.41/include/boost/log/formatters/date_time.hpp:40,
                 from /home/rbock/metafeed/sources/trunk/sources/LibLogger/tests/test.cpp:13:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp: In function ‘tm boost::posix_time::to_tm(const boost::posix_time::time_duration&)’:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_sec’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_min’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_hour’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_mday’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_mon’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_year’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_wday’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_yday’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_isdst’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_gmtoff’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/date_time/posix_time/conversion.hpp:46: warning: missing initializer for member ‘tm::tm_zone’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp: In copy constructor ‘boost::log_mt_posix::sources::basic_logger<CharT, FinalT, ThreadingModelT>::basic_logger(const boost::log_mt_posix::sources::basic_logger<CharT, FinalT, ThreadingModelT>&) [with CharT = char, FinalT = boost::log_mt_posix::sources::logger_mt, ThreadingModelT = boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex>]’:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:396: instantiated from ‘boost::log_mt_posix::sources::basic_composite_logger<CharT, FinalT, ThreadingModelT, FeaturesT>::basic_composite_logger(const boost::log_mt_posix::sources::basic_composite_logger<CharT, FinalT, ThreadingModelT, FeaturesT>&) [with CharT = char, FinalT = boost::log_mt_posix::sources::logger_mt, ThreadingModelT = boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex>, FeaturesT = boost::mpl::vector0<mpl_::na>]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:662: instantiated from here
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:131: warning: base class ‘struct boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex>’ should be explicitly initialized in the copy constructor
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp: In copy constructor ‘boost::log_mt_posix::sources::basic_logger<CharT, FinalT, ThreadingModelT>::basic_logger(const boost::log_mt_posix::sources::basic_logger<CharT, FinalT, ThreadingModelT>&) [with CharT = wchar_t, FinalT = boost::log_mt_posix::sources::wlogger_mt, ThreadingModelT = boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex>]’:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:396: instantiated from ‘boost::log_mt_posix::sources::basic_composite_logger<CharT, FinalT, ThreadingModelT, FeaturesT>::basic_composite_logger(const boost::log_mt_posix::sources::basic_composite_logger<CharT, FinalT, ThreadingModelT, FeaturesT>&) [with CharT = wchar_t, FinalT = boost::log_mt_posix::sources::wlogger_mt, ThreadingModelT = boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex>, FeaturesT = boost::mpl::vector0<mpl_::na>]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:691: instantiated from here
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:131: warning: base class ‘struct boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex>’ should be explicitly initialized in the copy constructor
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp: At global scope:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp: In instantiation of ‘boost::log_mt_posix::basic_record<CharT> boost::log_mt_posix::sources::basic_logger<CharT, FinalT, ThreadingModelT>::open_record_unlocked(const ArgsT&) [with ArgsT = boost::log_mt_posix::aux::empty_arg_list, CharT = char, FinalT = boost::log_mt_posix::sources::channel_logger<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, ThreadingModelT = boost::log_mt_posix::sources::single_thread_model]’:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:597: instantiated from ‘typename boost::mpl::reverse_fold<FeaturesT, boost::log_mt_posix::sources::basic_logger<CharT, FinalT, boost::log_mt_posix::sources::single_thread_model>, boost::log_mt_posix::sources::aux::inherit_logger_features, mpl_::arg<1> >::type::record_type boost::log_mt_posix::sources::basic_composite_logger<CharT, FinalT, boost::log_mt_posix::sources::single_thread_model, FeaturesT>::open_record() [with CharT = char, FinalT = boost::log_mt_posix::sources::channel_logger<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, FeaturesT = boost::mpl::vector1<boost::log_mt_posix::sources::channel<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]’
/home/rbock/metafeed/sources/trunk/sources/LibLogger/tests/test.cpp:111: instantiated from here
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:264: warning: unused parameter ‘args’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/parameter/aux_/tagged_argument.hpp: In instantiation of ‘Arg& boost::parameter::aux::tagged_argument<KW, T>::operator[](const boost::parameter::aux::default_<Keyword, Default>&) const [with Default = severity_level, Keyword = boost::log_mt_posix::keywords::tag::severity, Arg = const severity_level]’:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/severity_feature.hpp:224: instantiated from ‘typename BaseT::record_type boost::log_mt_posix::sources::basic_severity_logger<BaseT, LevelT>::open_record_unlocked(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::severity, const severity_level>, BaseT = boost::log_mt_posix::sources::basic_channel_logger<boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::log_mt_posix::sources::single_thread_model>, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, LevelT = severity_level]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:602: instantiated from ‘typename boost::mpl::reverse_fold<FeaturesT, boost::log_mt_posix::sources::basic_logger<CharT, FinalT, boost::log_mt_posix::sources::single_thread_model>, boost::log_mt_posix::sources::aux::inherit_logger_features, mpl_::arg<1> >::type::record_type boost::log_mt_posix::sources::basic_composite_logger<CharT, FinalT, boost::log_mt_posix::sources::single_thread_model, FeaturesT>::open_record(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::severity, const severity_level>, CharT = char, FinalT = boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, FeaturesT = boost::mpl::vector2<boost::log_mt_posix::sources::severity<severity_level>, boost::log_mt_posix::sources::channel<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]’
/home/rbock/metafeed/sources/trunk/sources/LibLogger/tests/test.cpp:90: instantiated from here
/home/rbock/metafeed/binaries/boost/1.41/include/boost/parameter/aux_/tagged_argument.hpp:123: warning: unused parameter ‘x’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp: In instantiation of ‘boost::log_mt_posix::sources::basic_logger<CharT, FinalT, ThreadingModelT>::basic_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [15]>, CharT = char, FinalT = boost::log_mt_posix::sources::channel_logger<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, ThreadingModelT = boost::log_mt_posix::sources::single_thread_model]’:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/channel_feature.hpp:125: instantiated from ‘boost::log_mt_posix::sources::basic_channel_logger<BaseT, ChannelT>::basic_channel_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [15]>, BaseT = boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::channel_logger<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::log_mt_posix::sources::single_thread_model>, ChannelT = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:564: instantiated from ‘boost::log_mt_posix::sources::basic_composite_logger<CharT, FinalT, boost::log_mt_posix::sources::single_thread_model, FeaturesT>::basic_composite_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [15]>, CharT = char, FinalT = boost::log_mt_posix::sources::channel_logger<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, FeaturesT = boost::mpl::vector1<boost::log_mt_posix::sources::channel<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/channel_logger.hpp:51: instantiated from ‘boost::log_mt_posix::sources::channel_logger<ChannelT>::channel_logger(const T0&) [with T0 = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [15]>, ChannelT = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’
/home/rbock/metafeed/sources/trunk/sources/LibLogger/tests/test.cpp:110: instantiated from here
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:141: warning: unused parameter ‘args’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp: In instantiation of ‘boost::log_mt_posix::sources::basic_logger<CharT, FinalT, ThreadingModelT>::basic_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [15]>, CharT = char, FinalT = boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, ThreadingModelT = boost::log_mt_posix::sources::single_thread_model]’:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/channel_feature.hpp:125: instantiated from ‘boost::log_mt_posix::sources::basic_channel_logger<BaseT, ChannelT>::basic_channel_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [15]>, BaseT = boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::log_mt_posix::sources::single_thread_model>, ChannelT = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/severity_feature.hpp:195: instantiated from ‘boost::log_mt_posix::sources::basic_severity_logger<BaseT, LevelT>::basic_severity_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [15]>, BaseT = boost::log_mt_posix::sources::basic_channel_logger<boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::log_mt_posix::sources::single_thread_model>, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, LevelT = severity_level]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:564: instantiated from ‘boost::log_mt_posix::sources::basic_composite_logger<CharT, FinalT, boost::log_mt_posix::sources::single_thread_model, FeaturesT>::basic_composite_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [15]>, CharT = char, FinalT = boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, FeaturesT = boost::mpl::vector2<boost::log_mt_posix::sources::severity<severity_level>, boost::log_mt_posix::sources::channel<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/severity_channel_logger.hpp:61: instantiated from ‘boost::log_mt_posix::sources::severity_channel_logger<LevelT, ChannelT>::severity_channel_logger(const T0&) [with T0 = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [15]>, LevelT = severity_level, ChannelT = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’
/home/rbock/metafeed/sources/trunk/sources/LibLogger/tests/test.cpp:88: instantiated from here
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:141: warning: unused parameter ‘args’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp: In instantiation of ‘boost::log_mt_posix::sources::basic_logger<CharT, FinalT, ThreadingModelT>::basic_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [16]>, CharT = char, FinalT = boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, ThreadingModelT = boost::log_mt_posix::sources::single_thread_model]’:
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/channel_feature.hpp:125: instantiated from ‘boost::log_mt_posix::sources::basic_channel_logger<BaseT, ChannelT>::basic_channel_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [16]>, BaseT = boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::log_mt_posix::sources::single_thread_model>, ChannelT = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/severity_feature.hpp:195: instantiated from ‘boost::log_mt_posix::sources::basic_severity_logger<BaseT, LevelT>::basic_severity_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [16]>, BaseT = boost::log_mt_posix::sources::basic_channel_logger<boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::log_mt_posix::sources::single_thread_model>, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, LevelT = severity_level]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:564: instantiated from ‘boost::log_mt_posix::sources::basic_composite_logger<CharT, FinalT, boost::log_mt_posix::sources::single_thread_model, FeaturesT>::basic_composite_logger(const ArgsT&) [with ArgsT = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [16]>, CharT = char, FinalT = boost::log_mt_posix::sources::severity_channel_logger<severity_level, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, FeaturesT = boost::mpl::vector2<boost::log_mt_posix::sources::severity<severity_level>, boost::log_mt_posix::sources::channel<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]’
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/severity_channel_logger.hpp:61: instantiated from ‘boost::log_mt_posix::sources::severity_channel_logger<LevelT, ChannelT>::severity_channel_logger(const T0&) [with T0 = boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::channel, const char [16]>, LevelT = severity_level, ChannelT = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’
/home/rbock/metafeed/sources/trunk/sources/LibLogger/tests/test.cpp:98: instantiated from here
/home/rbock/metafeed/binaries/boost/1.41/include/boost/log/sources/basic_logger.hpp:141: warning: unused parameter ‘args’
[100%] Building C object tests/CMakeFiles/Test.dir/__/generated/revision.o
Linking CXX executable Test
[100%] Built target Test


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk