Как напечатать только имя функции и класса без возвращаемого типа?
25-01-17 10:37:34 [информация]: |b.cpp| |7| пустота как __cdecl а::Функ(ничтожным) вызов функции
25-01-17 10:37:34 [информация]: |C.cpp| |6| пустота как __cdecl а::func1 из(ничтожным) функцию func1 начать
Мне нужен такой выход:
25-01-17 10: 37: 34 [информация]: |C.cpp| / 6 / A:: Func1 Func1 Start
.СРР
---
не могли бы вы мне помочь?
#include "simpleLogger.h" namespace logging = boost::log; namespace sinks = boost::log::sinks; namespace src = boost::log::sources; namespace expr = boost::log::expressions; namespace attrs = boost::log::attributes; namespace keywords = boost::log::keywords; //Defines a global logger initialization routine BOOST_LOG_GLOBAL_LOGGER_INIT(my_logger, logger_t) { logger_t lg; logging::add_common_attributes(); logging::add_file_log( keywords::file_name = SYS_LOGFILE, keywords::rotation_size = 1024 * 1024 * 20, // megabytes keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point (0, 0, 0), keywords::auto_flush = true, keywords::format = ( expr::stream << expr::format_date_time <boost::posix_time::ptime> ("TimeStamp", "%d-%m-%y %H:%M:%S") << " [" << expr::attr <boost::log::trivial::severity_level> ("Severity") << "]: " << expr::smessage) ); logging::add_console_log( std::cout, keywords::format = ( expr::stream <<"|"<< expr::format_date_time <boost::posix_time::ptime> ("TimeStamp", "%d-%m-%y %H:%M:%S")<<"|" << " [" << expr::attr <boost::log::trivial::severity_level> ("Severity") << "]: " << expr::smessage )); logging::core::get()->set_filter ( logging::trivial::severity >= logging::trivial::info ); return lg; }
Что я уже пробовал:
#ifndef simpleLogger_h__ #define simpleLogger_h__ #include <crtdefs.h> #include <boost/log/expressions.hpp> #include <boost/log/expressions/formatters/named_scope.hpp> #include <boost/log/sources/global_logger_storage.hpp> #include <boost/log/support/date_time.hpp> #include <boost/log/trivial.hpp> #include <boost/log/utility/setup.hpp> #include <string.h> #include <boost/log/sinks/debug_output_backend.hpp> #define FILE (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) #define INFO BOOST_LOG_SEV(my_logger::get(), boost::log::trivial::info) << "|" << FILE<< "| " <<" "<<"|"<< __LINE__ << "| "<<__FUNCSIG__ #define WARN BOOST_LOG_SEV(my_logger::get(), boost::log::trivial::warning) << "|" << FILE<< "| " <<" "<<"|"<< __LINE__ << "| "<<__FUNCSIG__ #define ERROR BOOST_LOG_SEV(my_logger::get(), boost::log::trivial::error) << "|" << FILE<< "| " <<" "<<"|"<< __LINE__ << "| "<<__FUNCSIG__ #define SYS_LOGFILE "C:\\Users\\janardhanreddyn\\Documents\\LogFile\\Logfile.log" //Narrow-char thread-safe logger. typedef boost::log::sources::severity_logger_mt<boost::log::trivial::severity_level> logger_t; //declares a global logger with a custom initialization BOOST_LOG_GLOBAL_LOGGER(my_logger, logger_t) class A { public: void Func(); void Func1(); }; #endif
Philippe Mori
Избегайте использования макросов, когда в этом нет необходимости, и избегайте помещения сложного кода в макросы. Используйте встроенные функции и константы, когда это возможно, и макрос только для той части, где нет альтернативы.