
So I guess I define my macro based on your earlier example: #define LOG(x) alm.log(basic_entry<>("") \ << boost::posix_time::microsec_clock::local_time() \ << "," << __FILE__ \ << "," << __LINE__ \ << "," << BOOST_CURRENT_FUNCTION \ << ":" << (x))
You might also consider a simple subclass of basic_entry that does the formatting in the constructor like: struct my_entry : public basic_entry<> { template <typename X> my_entry( const char* file, const int line, const char* fctn, const X& x ) : basic_entry<>() { basic_entry<>::operator << (boost::posix_time::microsec_clock::local_time()) << "," << file << "," << line << "," << fctn << ":" << x; } }; Then your macro would read: #define LOG(tlm, x) tlm.log(my_entry(__FILE__, __LINE__, BOOST_CURRENT_FUNCTION, x)) John