diff --git a/include/fc/log.hpp b/include/fc/log.hpp index ab3f6c6..7f9fccc 100644 --- a/include/fc/log.hpp +++ b/include/fc/log.hpp @@ -1,19 +1,13 @@ -#ifndef _FC_LOG_HPP_ -#define _FC_LOG_HPP_ -#include - -namespace boost { class mutex; } - -namespace fc { - /** wrapper on printf */ - void log( const char* color, const char* file_name, size_t line_num, const char* method_name, const char* format, ... ); - - /** used to add extra fields to be printed (thread,fiber,time,etc) */ - void add_log_field( void (*f)() ); - void remove_log_field( void (*f)() ); - - boost::mutex& log_mutex(); -} +/** + * @file mace/cmt/log/log.hpp + * @brief Defines helpful console logging methods. + */ +#ifndef _BOOST_RPC_LOG_HPP_ +#define _BOOST_RPC_LOG_HPP_ +#include +#include +#include +#include #ifndef __func__ #define __func__ __FUNCTION__ @@ -23,11 +17,82 @@ namespace fc { #define COLOR_CONSOLE 1 #endif #include - -#define dlog(...) do { fc::log( CONSOLE_DEFAULT, __FILE__, __LINE__, __func__, __VA_ARGS__ ); }while(false) -#define slog(...) do { fc::log( CONSOLE_DEFAULT, __FILE__, __LINE__, __func__, __VA_ARGS__ ); }while(false) -#define wlog(...) do { fc::log( CONSOLE_BROWN, __FILE__, __LINE__, __func__, __VA_ARGS__ ); }while(false) -#define elog(...) do { fc::log( CONSOLE_RED, __FILE__, __LINE__, __func__, __VA_ARGS__ ); }while(false) +#include +#include +#include -#endif // _FC_LOG_HPP_ +namespace fc { + const char* thread_name(); + + boost::mutex& log_mutex(); + namespace detail { + + inline std::string short_name( const std::string& file_name ) { return file_name.substr( file_name.rfind( '/' ) + 1 ); } + + inline void log( std::ostream& os, const char* color, const char* file, uint32_t line, const char* method, const char* text ) { + fc::unique_lock lock(log_mutex()); + os< + inline void log( std::ostream& os, const char* color, const char* file, uint32_t line, const char* method, const std::string& format, const P1& p1 ) { + fc::unique_lock lock(log_mutex()); + os< + inline void log( std::ostream& os, const char* color, const char* file, uint32_t line, const char* method, const std::string& format, const P1& p1, const P2& p2 ) { + fc::unique_lock lock(log_mutex()); + os< + inline void log( std::ostream& os, const char* color, const char* file, uint32_t line, const char* method, const std::string& format, const P1& p1, const P2& p2, const P3& p3 ) { + fc::unique_lock lock(log_mutex()); + os< + inline void log( std::ostream& os, const char* color, const char* file, uint32_t line, const char* method, const std::string& format, const P1& p1, const P2& p2, const P3& p3, const P4& p4 ) { + fc::unique_lock lock(log_mutex()); + os< + inline void log( std::ostream& os, const char* color, const char* file, uint32_t line, const char* method, const std::string& format, const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5 ) { + fc::unique_lock lock(log_mutex()); + os< + inline void log( std::ostream& os, const char* color, const char* file, uint32_t line, const char* method, const std::string& format, const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6 ) { + fc::unique_lock lock(log_mutex()); + os<