libosmocore 0.9.6-23.20170220git32ee5af8.fc42
Osmocom core library
|
Files | |
file | logging.h |
file | logging_gsmtap.c |
file | logging_syslog.c |
file | loggingrb.c |
Data Structures | |
struct | log_category |
struct | log_info_cat |
Information regarding one logging category. More... | |
struct | log_context |
Log context information, passed to filter. More... | |
struct | log_info |
Logging configuration, passed to log_init. More... | |
struct | log_target |
structure representing a logging target More... | |
Macros | |
#define | LOG_MAX_CTX 8 |
Maximum number of logging contexts. | |
#define | LOG_MAX_FILTERS 8 |
Maximum number of logging filters. | |
#define | DEBUG |
#define | DEBUGP(ss, fmt, args...) |
Log a debug message through the Osmocom logging framework. | |
#define | DEBUGPC(ss, fmt, args...) |
#define | LOGP(ss, level, fmt, args...) |
Log a new message through the Osmocom logging framework. | |
#define | LOGPC(ss, level, fmt, args...) |
Continue a log message through the Osmocom logging framework. | |
#define | LOGPSRC(ss, level, caller_file, caller_line, fmt, args...) |
Log through the Osmocom logging framework with explicit source. If caller_file is passed as NULL, BASE_FILE and LINE are used instead of caller_file and caller_line (so that this macro here defines both cases in the same place, and to catch cases where callers fail to pass a non-null filename string). | |
#define | LOGL_DEBUG 1 |
different log levels | |
#define | LOGL_INFO 3 |
general information | |
#define | LOGL_NOTICE 5 |
abnormal/unexpected condition | |
#define | LOGL_ERROR 7 |
error condition, requires user action | |
#define | LOGL_FATAL 8 |
fatal, program aborted | |
#define | LOG_FILTER_ALL 0x0001 |
#define | DLGLOBAL -1 |
#define | DLLAPD -2 |
#define | DLINP -3 |
#define | DLMUX -4 |
#define | DLMI -5 |
#define | DLMIB -6 |
#define | DLSMS -7 |
#define | DLCTRL -8 |
#define | DLGTP -9 |
#define | DLSTATS -10 |
#define | DLGSUP -11 |
#define | DLOAP -12 |
#define | OSMO_NUM_DLIB 12 |
#define | GSMTAP_LOG_MAX_SIZE 4096 |
Typedefs | |
typedef int | log_filter(const struct log_context *ctx, struct log_target *target) |
Log filter function. | |
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) |
Enumerations | |
enum | log_target_type { LOG_TGT_TYPE_VTY , LOG_TGT_TYPE_SYSLOG , LOG_TGT_TYPE_FILE , LOG_TGT_TYPE_STDERR , LOG_TGT_TYPE_STRRB , LOG_TGT_TYPE_GSMTAP } |
Type of logging target. More... | |
Functions | |
void | osmo_vlogp (int subsys, int level, const char *file, int line, int cont, const char *format, va_list ap) |
vararg version of logging function | |
void | logp (int subsys, const char *file, int line, int cont, const char *format,...) OSMO_DEPRECATED("Use DEBUGP* macros instead") |
logging function used by DEBUGP() macro | |
void | logp2 (int subsys, unsigned int level, const char *file, int line, int cont, const char *format,...) __attribute__((format(printf |
void int | log_init (const struct log_info *inf, void *talloc_ctx) |
Initialize the Osmocom logging core. | |
void | log_fini (void) |
int | log_check_level (int subsys, unsigned int level) |
Check whether a log entry will be generated. | |
void | log_reset_context (void) |
Reset (clear) the logging context. | |
int | log_set_context (uint8_t ctx, void *value) |
Set the logging context. | |
void | log_set_all_filter (struct log_target *target, int) |
Enable the LOG_FILTER_ALL log filter. | |
void | log_set_use_color (struct log_target *target, int) |
Enable or disable the use of colored output. | |
void | log_set_print_extended_timestamp (struct log_target *target, int) |
Enable or disable printing of extended timestamps while logging. | |
void | log_set_print_timestamp (struct log_target *target, int) |
Enable or disable printing of timestamps while logging. | |
void | log_set_print_filename (struct log_target *target, int) |
Enable or disable printing of the filename while logging. | |
void | log_set_print_category (struct log_target *target, int) |
Enable or disable printing of the category name. | |
void | log_set_log_level (struct log_target *target, int log_level) |
Set the global log level for a given log target. | |
void | log_parse_category_mask (struct log_target *target, const char *mask) |
parse the log category mask | |
const char * | log_category_name (int subsys) |
int | log_parse_level (const char *lvl) |
Parse a human-readable log level into a numeric value. | |
const char * | log_level_str (unsigned int lvl) |
convert a numeric log level into human-readable string | |
int | log_parse_category (const char *category) |
parse a human-readable log category into numeric form | |
void | log_set_category_filter (struct log_target *target, int category, int enable, int level) |
Set a category filter on a given log target. | |
struct log_target * | log_target_create (void) |
Create a new log target skeleton. | |
void | log_target_destroy (struct log_target *target) |
Unregister, close and delete a log target. | |
struct log_target * | log_target_create_stderr (void) |
Create the STDERR log target. | |
struct log_target * | log_target_create_file (const char *fname) |
Create a new file-based log target. | |
struct log_target * | log_target_create_syslog (const char *ident, int option, int facility) |
Create a new logging target for syslog logging. | |
struct log_target * | log_target_create_gsmtap (const char *host, uint16_t port, const char *ident, bool ofd_wq_mode, bool add_sink) |
Create a new logging target for GSMTAP logging. | |
int | log_target_file_reopen (struct log_target *tgt) |
close and re-open a log file (for log file rotation) | |
int | log_targets_reopen (void) |
close and re-open all log files (for log file rotation) | |
void | log_add_target (struct log_target *target) |
Register a new log target with the logging core. | |
void | log_del_target (struct log_target *target) |
Unregister a log target from the logging core. | |
const char * | log_vty_command_string (const struct log_info *info) |
Generates the logging command string for VTY. | |
const char * | log_vty_command_description (const struct log_info *info) |
Generates the logging command description for VTY. | |
struct log_target * | log_target_find (int type, const char *fname) |
Find a registered log target. | |
static void | _gsmtap_raw_output (struct log_target *target, int subsys, unsigned int level, const char *file, int line, int cont, const char *format, va_list ap) |
static int | logp2syslog_level (unsigned int level) |
static void | _syslog_output (struct log_target *target, unsigned int level, const char *log) |
static void | _rb_output (struct log_target *target, unsigned int level, const char *log) |
size_t | log_target_rb_used_size (struct log_target const *target) |
Return the number of log strings in the osmo_strrb-backed target. | |
size_t | log_target_rb_avail_size (struct log_target const *target) |
Return the capacity of the osmo_strrb-backed target. | |
const char * | log_target_rb_get (struct log_target const *target, size_t logindex) |
Return the nth log entry in a target. | |
struct log_target * | log_target_create_rb (size_t size) |
Create a new logging target for ringbuffer-backed logging. | |
Variables | |
struct llist_head | osmo_log_target_list |
#define DEBUGP | ( | ss, | |
fmt, | |||
args... ) |
Log a debug message through the Osmocom logging framework.
[in] | ss | logging subsystem (e.g. DLGLOBAL) |
[in] | fmt | format string |
[in] | args | variable argument list |
#define DEBUGPC | ( | ss, | |
fmt, | |||
args... ) |
#define DLCTRL -8 |
Control Interface
#define DLGLOBAL -1 |
global logging
Referenced by _osmo_fsm_inst_dispatch(), osmo_sock_init(), osmo_sock_init_sa(), osmo_sock_unix_init(), osmo_sockaddr_is_local(), and osmo_wqueue_enqueue().
#define DLGSUP -11 |
Generic Subscriber Update Protocol
#define DLGTP -9 |
GTP (GPRS Tunneling Protocol
#define DLINP -3 |
(A-bis) Input sub-system
#define DLLAPD -2 |
LAPD implementation
#define DLMI -5 |
ISDN-layer below input sub-system
#define DLMIB -6 |
ISDN layer B-channel
#define DLMUX -4 |
Osmocom Multiplex (Osmux)
#define DLOAP -12 |
Osmocom Authentication Protocol
#define DLSMS -7 |
SMS sub-system
#define DLSTATS -10 |
Statistics
#define LOGL_DEBUG 1 |
#define LOGP | ( | ss, | |
level, | |||
fmt, | |||
args... ) |
Log a new message through the Osmocom logging framework.
[in] | ss | logging subsystem (e.g. DLGLOBAL) |
[in] | level | logging level (e.g. LOGL_NOTICE) |
[in] | fmt | format string |
[in] | args | variable argument list |
Referenced by osmo_sock_init(), osmo_sock_init_sa(), osmo_sock_unix_init(), osmo_sockaddr_is_local(), and osmo_wqueue_enqueue().
#define LOGPC | ( | ss, | |
level, | |||
fmt, | |||
args... ) |
Continue a log message through the Osmocom logging framework.
[in] | ss | logging subsystem (e.g. DLGLOBAL) |
[in] | level | logging level (e.g. LOGL_NOTICE) |
[in] | fmt | format string |
[in] | args | variable argument list |
#define LOGPSRC | ( | ss, | |
level, | |||
caller_file, | |||
caller_line, | |||
fmt, | |||
args... ) |
Log through the Osmocom logging framework with explicit source. If caller_file is passed as NULL, BASE_FILE and LINE are used instead of caller_file and caller_line (so that this macro here defines both cases in the same place, and to catch cases where callers fail to pass a non-null filename string).
[in] | ss | logging subsystem (e.g. DLGLOBAL) |
[in] | level | logging level (e.g. LOGL_NOTICE) |
[in] | caller_file | caller's source file string (e.g. BASE_FILE) |
[in] | caller_line | caller's source line nr (e.g. LINE) |
[in] | fmt | format string |
[in] | args | variable argument list |
Referenced by _osmo_fsm_inst_dispatch().
#define OSMO_NUM_DLIB 12 |
Number of logging sub-systems in libraries
enum log_target_type |
void log_add_target | ( | struct log_target * | target | ) |
Register a new log target with the logging core.
[in] | target | Log target to be registered |
References log_target::entry, and llist_add_tail().
Referenced by osmo_init_logging().
int log_check_level | ( | int | subsys, |
unsigned int | level ) |
Check whether a log entry will be generated.
References log_target::entry, and llist_for_each_entry.
void log_del_target | ( | struct log_target * | target | ) |
Unregister a log target from the logging core.
[in] | target | Log target to be unregistered |
References log_target::entry, and llist_del().
Referenced by log_target_destroy().
void int log_init | ( | const struct log_info * | inf, |
void * | ctx ) |
Initialize the Osmocom logging core.
[in] | inf | Information regarding logging categories |
[in] | ctx | talloc context for logging allocations |
References ARRAY_SIZE, log_info::cat, log_info::num_cat, and log_info::num_cat_user.
Referenced by osmo_init_logging().
const char * log_level_str | ( | unsigned int | lvl | ) |
convert a numeric log level into human-readable string
lvl[in] | numeric log level |
References get_value_string().
int log_parse_category | ( | const char * | category | ) |
parse a human-readable log category into numeric form
[in] | category | human-readable log category name |
References log_info::cat, log_info_cat::name, and log_info::num_cat.
void log_parse_category_mask | ( | struct log_target * | target, |
const char * | _mask ) |
parse the log category mask
[in] | target | log target to be configured |
[in] | _mask | log category mask string |
The format can be this: category1:category2:category3 or category1,2:category2,3:...
References log_info::cat, log_target::categories, log_category::enabled, log_category::loglevel, log_info_cat::name, log_info::num_cat, and OSMO_ASSERT.
int log_parse_level | ( | const char * | lvl | ) |
Parse a human-readable log level into a numeric value.
lvl[in] | zero-terminated string containing log level name |
References get_string_value().
void log_set_all_filter | ( | struct log_target * | target, |
int | all ) |
Enable the LOG_FILTER_ALL log filter.
[in] | target | Log target to be affected |
[in] | all | enable (1) or disable (0) the ALL filter |
When the LOG_FILTER_ALL filter is enabled, all log messages will be printed. It acts as a wildcard. Setting it to 1 means there is no filtering.
References log_target::filter_map.
Referenced by osmo_init_logging().
void log_set_category_filter | ( | struct log_target * | target, |
int | category, | ||
int | enable, | ||
int | level ) |
Set a category filter on a given log target.
[in] | target | Log target to be affected |
[in] | category | Log category to be affected |
[in] | enable | whether to enable or disable the filter |
[in] | level | Log level of the filter |
References log_target::categories, log_category::enabled, and log_category::loglevel.
int log_set_context | ( | uint8_t | ctx_nr, |
void * | value ) |
Set the logging context.
[in] | ctx_nr | logging context number |
[in] | value | value to which the context is to be set |
A logging context is something like the subscriber identity to which the currently processed message relates, or the BTS through which it was received. As soon as this data is known, it can be set using this function. The main use of context information is for logging filters.
References LOG_MAX_CTX.
void log_set_log_level | ( | struct log_target * | target, |
int | log_level ) |
Set the global log level for a given log target.
[in] | target | Log target to be affected |
[in] | log_level | New global log level |
References log_target::loglevel.
void log_set_print_category | ( | struct log_target * | target, |
int | print_category ) |
Enable or disable printing of the category name.
[in] | target | Log target to be affected |
[in] | print_catname | Enable (1) or disable (0) filenames |
Print the category/subsys name in front of every log message.
References log_target::print_category.
void log_set_print_extended_timestamp | ( | struct log_target * | target, |
int | print_timestamp ) |
Enable or disable printing of extended timestamps while logging.
[in] | target | Log target to be affected |
[in] | print_timestamp | Enable (1) or disable (0) timestamps |
When both timestamp and extended timestamp is enabled then only the extended timestamp will be used. The format of the timestamp is YYYYMMDDhhmmssnnn.
References log_target::print_ext_timestamp, and log_target::print_timestamp.
void log_set_print_filename | ( | struct log_target * | target, |
int | print_filename ) |
Enable or disable printing of the filename while logging.
[in] | target | Log target to be affected |
[in] | print_filename | Enable (1) or disable (0) filenames |
References log_target::print_filename.
void log_set_print_timestamp | ( | struct log_target * | target, |
int | print_timestamp ) |
Enable or disable printing of timestamps while logging.
[in] | target | Log target to be affected |
[in] | print_timestamp | Enable (1) or disable (0) timestamps |
References log_target::print_timestamp.
void log_set_use_color | ( | struct log_target * | target, |
int | use_color ) |
Enable or disable the use of colored output.
[in] | target | Log target to be affected |
[in] | use_color | Use color (1) or don't use color (0) |
References log_target::use_color.
struct log_target * log_target_create | ( | void | ) |
Create a new log target skeleton.
References log_info::cat, log_target::categories, log_category::enabled, log_info_cat::enabled, log_target::entry, INIT_LLIST_HEAD, log_category::loglevel, log_info_cat::loglevel, log_target::loglevel, log_info::num_cat, log_target::print_filename, log_target::print_timestamp, and log_target::use_color.
Referenced by log_target_create_file(), log_target_create_gsmtap(), log_target_create_rb(), log_target_create_stderr(), and log_target_create_syslog().
struct log_target * log_target_create_file | ( | const char * | fname | ) |
Create a new file-based log target.
[in] | fname | File name of the new log file |
References log_target_create(), LOG_TGT_TYPE_FILE, log_target::output, and log_target::type.
struct log_target * log_target_create_gsmtap | ( | const char * | host, |
uint16_t | port, | ||
const char * | ident, | ||
bool | ofd_wq_mode, | ||
bool | add_sink ) |
Create a new logging target for GSMTAP logging.
[in] | ident | string identifier |
References gsmtap_source_add_sink(), gsmtap_source_init(), log_target_create(), log_target_destroy(), LOG_TGT_TYPE_GSMTAP, gsmtap_inst::ofd_wq_mode, log_target::raw_output, and log_target::type.
struct log_target * log_target_create_rb | ( | size_t | size | ) |
Create a new logging target for ringbuffer-backed logging.
[in] | size | The capacity (number of messages) of the logging target. |
References log_target_create(), log_target_destroy(), LOG_TGT_TYPE_STRRB, osmo_strrb_create(), log_target::output, osmo_strrb::size, and log_target::type.
struct log_target * log_target_create_stderr | ( | void | ) |
Create the STDERR log target.
References log_target_create(), LOG_TGT_TYPE_STDERR, log_target::output, and log_target::type.
Referenced by osmo_init_logging().
struct log_target * log_target_create_syslog | ( | const char * | ident, |
int | option, | ||
int | facility ) |
Create a new logging target for syslog logging.
[in] | ident | syslog string identifier |
[in] | option | syslog options |
[in] | facility | syslog facility |
References log_target_create(), LOG_TGT_TYPE_SYSLOG, log_target::output, and log_target::type.
void log_target_destroy | ( | struct log_target * | target | ) |
Unregister, close and delete a log target.
target[in] | log target to unregister, close and delete |
References log_del_target(), and log_target::output.
Referenced by log_target_create_gsmtap(), and log_target_create_rb().
int log_target_file_reopen | ( | struct log_target * | target | ) |
close and re-open a log file (for log file rotation)
[in] | target | log target to re-open |
Referenced by log_targets_reopen().
struct log_target * log_target_find | ( | int | type, |
const char * | fname ) |
Find a registered log target.
[in] | type | Log target type |
[in] | fname | File name |
References log_target::entry, llist_for_each_entry, LOG_TGT_TYPE_FILE, and log_target::type.
size_t log_target_rb_avail_size | ( | struct log_target const * | target | ) |
Return the capacity of the osmo_strrb-backed target.
[in] | target | The target to search. |
Note that this is the capacity (aka max number of messages). It is not the number of unused message slots.
References osmo_strrb::size.
const char * log_target_rb_get | ( | struct log_target const * | target, |
size_t | logindex ) |
Return the nth log entry in a target.
[in] | target | The target to search. |
[in] | logindex | The index of the log entry/error message. |
References osmo_strrb_get_nth().
size_t log_target_rb_used_size | ( | struct log_target const * | target | ) |
Return the number of log strings in the osmo_strrb-backed target.
[in] | target | The target to search. |
References osmo_strrb_elements().
int log_targets_reopen | ( | void | ) |
close and re-open all log files (for log file rotation)
References log_target::entry, llist_for_each_entry, log_target_file_reopen(), LOG_TGT_TYPE_FILE, and log_target::type.
const char * log_vty_command_description | ( | const struct log_info * | unused_info | ) |
Generates the logging command description for VTY.
[in] | unused_info | Deprecated parameter, no longer used! |
References log_info::cat, log_info_cat::description, log_info_cat::name, and log_info::num_cat.
const char * log_vty_command_string | ( | const struct log_info * | unused_info | ) |
Generates the logging command string for VTY.
[in] | unused_info | Deprecated parameter, no longer used! |
References log_info::cat, log_info_cat::name, and log_info::num_cat.
void logp | ( | int | subsys, |
const char * | file, | ||
int | line, | ||
int | cont, | ||
const char * | format, | ||
... ) |
logging function used by DEBUGP() macro
[in] | subsys | Logging sub-system |
[in] | file | name of source code file |
[in] | cont | continuation (1) or new line (0) |
[in] | format | format string |
References LOGL_DEBUG, and osmo_vlogp().
void osmo_vlogp | ( | int | subsys, |
int | level, | ||
const char * | file, | ||
int | line, | ||
int | cont, | ||
const char * | format, | ||
va_list | ap ) |
vararg version of logging function
[in] | subsys | Logging sub-system |
[in] | level | Log level |
[in] | file | name of source code file |
[in] | cont | continuation (1) or new line (0) |
[in] | format | format string |
[in] | ap | vararg-list containing format string arguments |
References log_target::entry, llist_for_each_entry, and log_target::raw_output.
Referenced by logp().