diff options
-rw-r--r-- | gnuradio-runtime/include/gnuradio/logger.h.in | 86 | ||||
-rw-r--r-- | gnuradio-runtime/lib/block.cc | 12 | ||||
-rw-r--r-- | gnuradio-runtime/lib/logger.cc | 15 | ||||
-rw-r--r-- | gnuradio-runtime/lib/tpb_thread_body.cc | 40 |
4 files changed, 127 insertions, 26 deletions
diff --git a/gnuradio-runtime/include/gnuradio/logger.h.in b/gnuradio-runtime/include/gnuradio/logger.h.in index 073a6162fb..8e8cd2fb1e 100644 --- a/gnuradio-runtime/include/gnuradio/logger.h.in +++ b/gnuradio-runtime/include/gnuradio/logger.h.in @@ -76,10 +76,16 @@ namespace gr { #define GR_LOG_GET_LEVEL(logger, level) #define GR_ADD_APPENDER(name,appender) #define GR_LOG_ADD_APPENDER(logger,appender) +#define GR_SET_APPENDER(name,appender) +#define GR_LOG_SET_APPENDER(logger,appender) #define GR_ADD_CONSOLE_APPENDER(logger,target,pattern) #define GR_LOG_ADD_CONSOLE_APPENDER(logger,target,pattern) +#define GR_SET_CONSOLE_APPENDER(logger,target,pattern) +#define GR_LOG_SET_CONSOLE_APPENDER(logger,target,pattern) #define GR_ADD_FILE_APPENDER(name,filename,append,pattern) #define GR_LOG_ADD_FILE_APPENDER(logger,filename,append,pattern) +#define GR_SET_FILE_APPENDER(name,filename,append,pattern) +#define GR_LOG_SET_FILE_APPENDER(logger,filename,append,pattern) #define GR_ADD_ROLLINGFILE_APPENDER(name,filename,filesize,bkup_index,append,mode,pattern) #define GR_LOG_ADD_ROLLINGFILE_APPENDER(logger,filename,filesize,bkup_index,append,mode,pattern) #define GR_GET_LOGGER_NAMES(names) @@ -180,6 +186,13 @@ namespace gr { #define GR_LOG_ADD_APPENDER(logger, appender) { \ gr::logger_add_appender(logger, appender);} +#define GR_SET_APPENDER(name, appender) { \ + gr::logger_ptr logger = gr::logger_get_logger(name); \ + gr::logger_set_appender(logger,appender);} + +#define GR_LOG_SET_APPENDER(logger, appender) { \ + gr::logger_set_appender(logger, appender);} + #define GR_ADD_CONSOLE_APPENDER(name, target, pattern) { \ gr::logger_ptr logger = gr::logger_get_logger(name); \ gr::logger_add_console_appender(logger,target,pattern);} @@ -187,6 +200,13 @@ namespace gr { #define GR_LOG_ADD_CONSOLE_APPENDER(logger, target, pattern) { \ gr::logger_add_console_appender(logger,target,pattern);} +#define GR_SET_CONSOLE_APPENDER(name, target, pattern) { \ + gr::logger_ptr logger = gr::logger_get_logger(name); \ + gr::logger_set_console_appender(logger,target,pattern);} + +#define GR_LOG_SET_CONSOLE_APPENDER(logger, target, pattern) { \ + gr::logger_set_console_appender(logger,target,pattern);} + #define GR_ADD_FILE_APPENDER(name, filename, append, pattern) { \ gr::logger_ptr logger = gr::logger_get_logger(name); \ gr::logger_add_file_appender(logger,filename,append,pattern);} @@ -194,6 +214,13 @@ namespace gr { #define GR_LOG_ADD_FILE_APPENDER(logger, filename, append, pattern) { \ gr::logger_add_file_appender(logger,filename,append,pattern);} +#define GR_SET_FILE_APPENDER(name, filename, append, pattern) { \ + gr::logger_ptr logger = gr::logger_get_logger(name); \ + gr::logger_set_file_appender(logger,filename,append,pattern);} + +#define GR_LOG_SET_FILE_APPENDER(logger, filename, append, pattern) { \ + gr::logger_set_file_appender(logger,filename,append,pattern);} + #define GR_ADD_ROLLINGFILE_APPENDER(name, filename, filesize, bkup_index, append, mode, pattern) { \ gr::logger_ptr logger = gr::logger_get_logger(name); \ gr::logger_add_rollingfile_appender(logger,filename,filesize,bkup_index,append,mode,pattern);} @@ -520,6 +547,17 @@ namespace gr { std::string appender); /*! + * \brief Sets a console appender to a given logger. Deletes any + * existing appenders and adds a new one. To add an additional + * appender, use logger_add_appender. + * + * \param logger Logger to which appender will be added + * \param appender Name of appender to add to logger + */ + GR_RUNTIME_API void logger_set_appender(logger_ptr logger, + std::string appender); + + /*! * \brief Add console appender to a given logger * * Add console appender to a given logger @@ -533,6 +571,19 @@ namespace gr { std::string pattern); /*! + * \brief Sets a new console appender to a given logger after + * removing all others. Use logger_add_console_appender to add + * another. + * + * \param logger Logger to which appender will be added + * \param target Std target to write 'cout' or 'cerr' (default is cout) + * \param pattern Formating pattern for log messages + */ + GR_RUNTIME_API void logger_set_console_appender(logger_ptr logger, + std::string target, + std::string pattern); + + /*! * \brief Add file appender to a given logger * * Add file appender to a given logger @@ -547,6 +598,19 @@ namespace gr { bool append, std::string pattern); /*! + * \brief Set a file appender to a given logger. To add another file + * appender, use logger_add_file_appender. + * + * \param logger Logger to which appender will be added + * \param filename File to which log will be written + * \param append Overwrite or append to log file + * \param pattern Formating pattern for log messages + */ + GR_RUNTIME_API void logger_set_file_appender(logger_ptr logger, + std::string filename, + bool append, std::string pattern); + + /*! * \brief Add rolling file appender to a given logger * * Add rolling file appender to a given logger @@ -594,10 +658,16 @@ namespace gr { #define GR_LOG_GET_LEVEL(logger, level) #define GR_ADD_APPENDER(name,appender) #define GR_LOG_ADD_APPENDER(logger,appender) +#define GR_SET_APPENDER(name,appender) +#define GR_LOG_SET_APPENDER(logger,appender) #define GR_ADD_CONSOLE_APPENDER(logger,target,pattern) #define GR_LOG_ADD_CONSOLE_APPENDER(logger,target,pattern) +#define GR_SET_CONSOLE_APPENDER(logger,target,pattern) +#define GR_LOG_SET_CONSOLE_APPENDER(logger,target,pattern) #define GR_ADD_FILE_APPENDER(name,filename,append,pattern) #define GR_LOG_ADD_FILE_APPENDER(logger,filename,append,pattern) +#define GR_SET_FILE_APPENDER(name,filename,append,pattern) +#define GR_LOG_SET_FILE_APPENDER(logger,filename,append,pattern) #define GR_ADD_ROLLINGFILE_APPENDER(name,filename,filesize,bkup_index,append,mode,pattern) #define GR_LOG_ADD_ROLLINGFILE_APPENDER(logger,filename,filesize,bkup_index,append,mode,pattern) #define GR_GET_LOGGER_NAMES(names) @@ -703,16 +773,32 @@ namespace gr { GR_LOG_ADD_APPENDER(d_logger, appender); } + /*! \brief inline function, Method to set an appender to logger by + name (define appender in conf file) */ + void set_appender(std::string appender) { + GR_LOG_SET_APPENDER(d_logger, appender); + } + /*! \brief inline function, Method to add console appender to logger */ void add_console_appender(std::string target,std::string pattern) { GR_LOG_ADD_CONSOLE_APPENDER(d_logger, target, pattern); } + /*! \brief inline function, Method to set a console appender to logger */ + void set_console_appender(std::string target,std::string pattern) { + GR_LOG_SET_CONSOLE_APPENDER(d_logger, target, pattern); + } + /*! \brief inline function, Method to add file appender to logger */ void add_file_appender(std::string filename, bool append, std::string pattern) { GR_LOG_ADD_FILE_APPENDER(d_logger, filename, append, pattern); } + /*! \brief inline function, Method to set a file appender to logger */ + void set_file_appender(std::string filename, bool append, std::string pattern) { + GR_LOG_SET_FILE_APPENDER(d_logger, filename, append, pattern); + } + /*! \brief inline function, Method to add rolling file appender to logger */ void add_rollingfile_appender(std::string filename, size_t filesize, int bkup_index, bool append, mode_t mode, diff --git a/gnuradio-runtime/lib/block.cc b/gnuradio-runtime/lib/block.cc index e5217dbfce..6309bca9b1 100644 --- a/gnuradio-runtime/lib/block.cc +++ b/gnuradio-runtime/lib/block.cc @@ -77,13 +77,13 @@ namespace gr { GR_LOG_SET_LEVEL(LOG, log_level); if(log_file.size() > 0) { if(log_file == "stdout") { - GR_LOG_ADD_CONSOLE_APPENDER(LOG, "cout","gr::log :%p: %c{1} - %m%n"); + GR_LOG_SET_CONSOLE_APPENDER(LOG, "cout","gr::log :%p: %c{1} - %m%n"); } else if(log_file == "stderr") { - GR_LOG_ADD_CONSOLE_APPENDER(LOG, "cerr","gr::log :%p: %c{1} - %m%n"); + GR_LOG_SET_CONSOLE_APPENDER(LOG, "cerr","gr::log :%p: %c{1} - %m%n"); } else { - GR_LOG_ADD_FILE_APPENDER(LOG, log_file , true,"%r :%p: %c{1} - %m%n"); + GR_LOG_SET_FILE_APPENDER(LOG, log_file , true,"%r :%p: %c{1} - %m%n"); } } d_logger = LOG; @@ -92,13 +92,13 @@ namespace gr { GR_LOG_SET_LEVEL(DLOG, debug_level); if(debug_file.size() > 0) { if(debug_file == "stdout") { - GR_LOG_ADD_CONSOLE_APPENDER(DLOG, "cout","gr::debug :%p: %c{1} - %m%n"); + GR_LOG_SET_CONSOLE_APPENDER(DLOG, "cout","gr::debug :%p: %c{1} - %m%n"); } else if(debug_file == "stderr") { - GR_LOG_ADD_CONSOLE_APPENDER(DLOG, "cerr", "gr::debug :%p: %c{1} - %m%n"); + GR_LOG_SET_CONSOLE_APPENDER(DLOG, "cerr", "gr::debug :%p: %c{1} - %m%n"); } else { - GR_LOG_ADD_FILE_APPENDER(DLOG, debug_file, true, "%r :%p: %c{1} - %m%n"); + GR_LOG_SET_FILE_APPENDER(DLOG, debug_file, true, "%r :%p: %c{1} - %m%n"); } } d_debug_logger = DLOG; diff --git a/gnuradio-runtime/lib/logger.cc b/gnuradio-runtime/lib/logger.cc index a7e4a25a40..c11f384cc6 100644 --- a/gnuradio-runtime/lib/logger.cc +++ b/gnuradio-runtime/lib/logger.cc @@ -254,6 +254,13 @@ namespace gr { } void + logger_set_console_appender(logger_ptr logger, std::string target, std::string pattern) + { + logger->removeAllAppenders(); + logger_add_console_appender(logger, target, pattern); + } + + void logger_add_file_appender(logger_ptr logger, std::string filename, bool append, std::string pattern) { @@ -267,6 +274,14 @@ namespace gr { } void + logger_set_file_appender(logger_ptr logger, std::string filename, + bool append, std::string pattern) + { + logger->removeAllAppenders(); + logger_add_file_appender(logger, filename, append, pattern); + } + + void logger_add_rollingfile_appender(logger_ptr logger, std::string filename, size_t filesize, int bkup_index, bool append, mode_t mode, std::string pattern) diff --git a/gnuradio-runtime/lib/tpb_thread_body.cc b/gnuradio-runtime/lib/tpb_thread_body.cc index eb47a43ee3..d2f0fce833 100644 --- a/gnuradio-runtime/lib/tpb_thread_body.cc +++ b/gnuradio-runtime/lib/tpb_thread_body.cc @@ -36,7 +36,7 @@ namespace gr { : d_exec(block, max_noutput_items) { //std::cerr << "tpb_thread_body: " << block << std::endl; - + thread::set_thread_name(pthread_self(), boost::str(boost::format("%s%d") % block->name() % block->unique_id())); block_detail *d = block->detail().get(); @@ -61,13 +61,13 @@ namespace gr { GR_CONFIG_LOGGER(config_file); if(log_file.size() > 0) { if(log_file == "stdout") { - GR_LOG_ADD_CONSOLE_APPENDER(LOG, "cout","gr::log :%p: %c{1} - %m%n"); + GR_LOG_SET_CONSOLE_APPENDER(LOG, "cout","gr::log :%p: %c{1} - %m%n"); } else if(log_file == "stderr") { - GR_LOG_ADD_CONSOLE_APPENDER(LOG, "cerr","gr::log :%p: %c{1} - %m%n"); + GR_LOG_SET_CONSOLE_APPENDER(LOG, "cerr","gr::log :%p: %c{1} - %m%n"); } else { - GR_LOG_ADD_FILE_APPENDER(LOG, log_file , true,"%r :%p: %c{1} - %m%n"); + GR_LOG_SET_FILE_APPENDER(LOG, log_file , true,"%r :%p: %c{1} - %m%n"); } } #endif /* HAVE_LOG4CPP */ @@ -83,7 +83,7 @@ namespace gr { if(block->thread_priority() > 0) { gr::thread::set_thread_priority(d->thread, block->thread_priority()); } - + // make sure our block isnt finished block->clear_finished(); @@ -107,7 +107,7 @@ namespace gr { if(block->nmsgs(i.first) > max_nmsgs){ GR_LOG_WARN(LOG,"asynchronous message buffer overflowing, dropping message"); msg = block->delete_head_nowait(i.first); - } + } } } @@ -154,19 +154,19 @@ namespace gr { // handle all pending messages BOOST_FOREACH(basic_block::msg_queue_map_t::value_type &i, block->msg_queue) { if(block->has_msg_handler(i.first)) { - while((msg = block->delete_head_nowait(i.first))) { - guard.unlock(); // release lock while processing msg - block->dispatch_msg(i.first, msg); - guard.lock(); - } + while((msg = block->delete_head_nowait(i.first))) { + guard.unlock(); // release lock while processing msg + block->dispatch_msg(i.first, msg); + guard.lock(); + } } else { - // leave msg in queue if no handler is defined - // start dropping if we have too many - if(block->nmsgs(i.first) > max_nmsgs){ - GR_LOG_WARN(LOG,"asynchronous message buffer overflowing, dropping message"); - msg = block->delete_head_nowait(i.first); - } + // leave msg in queue if no handler is defined + // start dropping if we have too many + if(block->nmsgs(i.first) > max_nmsgs){ + GR_LOG_WARN(LOG,"asynchronous message buffer overflowing, dropping message"); + msg = block->delete_head_nowait(i.first); + } } } if (d->done()) { @@ -197,11 +197,11 @@ namespace gr { // leave msg in queue if no handler is defined // start dropping if we have too many if(block->nmsgs(i.first) > max_nmsgs){ - GR_LOG_WARN(LOG,"asynchronous message buffer overflowing, dropping message"); - msg = block->delete_head_nowait(i.first); - } + GR_LOG_WARN(LOG,"asynchronous message buffer overflowing, dropping message"); + msg = block->delete_head_nowait(i.first); } } + } } } break; |