From fb84f325b8e672ba7ca1a961f4ef01f4d011e33d Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 6 Jun 2013 07:33:54 +0200 Subject: logging: Add ability to save/print current log filters This enables the persistent configuration of let's say 'log filter imsi 012345678' for a given log file in the config file. --- include/osmocom/core/logging.h | 16 ++++++++++++++++ src/Makefile.am | 2 +- src/vty/logging_vty.c | 8 ++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/include/osmocom/core/logging.h b/include/osmocom/core/logging.h index 3c5e7b15..4c893ac4 100644 --- a/include/osmocom/core/logging.h +++ b/include/osmocom/core/logging.h @@ -95,6 +95,17 @@ struct log_target; typedef int log_filter(const struct log_context *ctx, struct log_target *target); +struct log_info; +struct vty; + +typedef void log_print_filters(struct vty *vty, + const struct log_info *info, + const struct log_target *tgt); + +typedef void log_save_filters(struct vty *vty, + const struct log_info *info, + const struct log_target *tgt); + /*! \brief Logging configuration, passed to \ref log_init */ struct log_info { /* \brief filter callback function */ @@ -106,6 +117,11 @@ struct log_info { unsigned int num_cat; /*! \brief total number of user categories (not library) */ unsigned int num_cat_user; + + /* \brief filter saving function */ + log_save_filters *save_fn; + /* \brief filter saving function */ + log_print_filters *print_fn; }; /*! \brief Type of logging target */ diff --git a/src/Makefile.am b/src/Makefile.am index 841f6725..f2b1b838 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,6 @@ # This is _NOT_ the library release version, it's an API version. # Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification -LIBVERSION=4:0:0 +LIBVERSION=5:0:0 AM_CFLAGS = -Wall $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)/include diff --git a/src/vty/logging_vty.c b/src/vty/logging_vty.c index 64e49d7e..47877fe9 100644 --- a/src/vty/logging_vty.c +++ b/src/vty/logging_vty.c @@ -252,7 +252,9 @@ static void vty_print_logtarget(struct vty *vty, const struct log_info *info, tgt->filter_map & LOG_FILTER_ALL ? "Enabled" : "Disabled", VTY_NEWLINE); - /* FIXME: print application specific filters */ + /* print application specific filters */ + if (info->print_fn) + info->print_fn(vty, info, tgt); } #define SHOW_LOG_STR "Show current logging configuration\n" @@ -617,7 +619,9 @@ static int config_write_log_single(struct vty *vty, struct log_target *tgt) vty_out(vty, " logging filter all %u%s", tgt->filter_map & LOG_FILTER_ALL ? 1 : 0, VTY_NEWLINE); - /* FIXME: how to do this for filters outside of libosmocore? */ + /* save filters outside of libosmocore, i.e. in app code */ + if (osmo_log_info->save_fn) + osmo_log_info->save_fn(vty, osmo_log_info, tgt); vty_out(vty, " logging color %u%s", tgt->use_color ? 1 : 0, VTY_NEWLINE); -- cgit v1.2.3