aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2013-06-06 07:33:54 +0200
committerHarald Welte <laforge@gnumonks.org>2014-08-25 10:09:42 +0200
commitfb84f325b8e672ba7ca1a961f4ef01f4d011e33d (patch)
tree10801c74802d2f5715bea063fb4b362264e395ad
parent276ca4b1722df573f9af7735820712bcaf32b800 (diff)
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.
-rw-r--r--include/osmocom/core/logging.h16
-rw-r--r--src/Makefile.am2
-rw-r--r--src/vty/logging_vty.c8
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);