title: Is it possible to hide a macro like BOOST_LOG_TRIVIAL(lvl)
body: <p>I have used <code>boost.log</code> in one project for a while and it's a really great log lib. 
  But to use a basic log like <code>BOOST_LOG_TRIVIAL(lvl)</code> I need to include <code>boost/log/trivial.hpp</code> which will cause a lots of boost related stuff to be scoped. </p>
  
  <p>Is there any way (like using a wrapper or alias) to "hide" <code>boost/log/trivial.hpp</code> and <code>BOOST_LOG_TRIVIAL(lvl)</code> so I can be sure any other developer can only call the wrapped version of <code>BOOST_LOG_TRIVIAL(lvl)</code>?</p>
  
  <p>At the very beginning I thought <code>BOOST_LOG_TRIVIAL(lvl)</code> was a simple stream object but then I found that it will be expanded as:</p>
  
  <pre><code>#define BOOST_LOG_STREAM_WITH_PARAMS_INTERNAL(logger, rec_var, params_seq)\
      for (::boost::log::record rec_var = (logger).open_record((BOOST_PP_SEQ_ENUM(params_seq))); !!rec_var;)\
          ::boost::log::aux::make_record_pump((logger), rec_var).stream()
  </code></pre>
  
  <p>There is a for-loop here and I have no idea how to wrap it.</p>