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.
laforge/c-ares
Harald Welte 10 years ago
parent 276ca4b172
commit fb84f325b8
  1. 16
      include/osmocom/core/logging.h
  2. 2
      src/Makefile.am
  3. 8
      src/vty/logging_vty.c

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

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

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

Loading…
Cancel
Save