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.
This commit is contained in:
Harald Welte 2013-06-06 07:33:54 +02:00
parent 276ca4b172
commit fb84f325b8
3 changed files with 23 additions and 3 deletions

View File

@ -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 */

View File

@ -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

View File

@ -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);