libosmocore
1.4.0.358-967e
Osmocom core library
|
libosmocore Logging sub-system More...
Files | |
file | logging.c |
Debugging/Logging support code. | |
file | logging_gsmtap.c |
libosmocore log output encapsulated in GSMTAP. | |
file | logging_syslog.c |
Syslog logging support code. | |
file | logging_systemd.c |
Data Structures | |
struct | log_category |
Configuration of single log category / sub-system. More... | |
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 | DEBUG |
#define | DEBUGP(ss, fmt, args...) LOGP(ss, LOGL_DEBUG, fmt, ##args) |
Log a debug message through the Osmocom logging framework. More... | |
#define | DEBUGPC(ss, fmt, args...) LOGPC(ss, LOGL_DEBUG, fmt, ##args) |
#define | LOGP(ss, level, fmt, args...) LOGPSRC(ss, level, NULL, 0, fmt, ## args) |
Log a new message through the Osmocom logging framework. More... | |
#define | LOGPC(ss, level, fmt, args...) |
Continue a log message through the Osmocom logging framework. More... | |
#define | LOGPSRC(ss, level, caller_file, caller_line, fmt, args...) LOGPSRCC(ss, level, caller_file, caller_line, 0, fmt, ##args) |
Log through the Osmocom logging framework with explicit source. More... | |
#define | LOGPSRCC(ss, level, caller_file, caller_line, cont, fmt, args...) |
Log through the Osmocom logging framework with explicit source. More... | |
#define | LOGL_DEBUG 1 |
different log levels More... | |
#define | LOGL_INFO 3 |
general information More... | |
#define | LOGL_NOTICE 5 |
abnormal/unexpected condition More... | |
#define | LOGL_ERROR 7 |
error condition, requires user action More... | |
#define | LOGL_FATAL 8 |
fatal, program aborted More... | |
#define | DLGLOBAL -1 |
global logging More... | |
#define | DLLAPD -2 |
LAPD implementation. More... | |
#define | DLINP -3 |
(A-bis) Input sub-system More... | |
#define | DLMUX -4 |
Osmocom Multiplex (Osmux) More... | |
#define | DLMI -5 |
ISDN-layer below input sub-system. More... | |
#define | DLMIB -6 |
ISDN layer B-channel. More... | |
#define | DLSMS -7 |
SMS sub-system. More... | |
#define | DLCTRL -8 |
Control Interface. More... | |
#define | DLGTP -9 |
GTP (GPRS Tunneling Protocol. More... | |
#define | DLSTATS -10 |
Statistics. More... | |
#define | DLGSUP -11 |
Generic Subscriber Update Protocol. More... | |
#define | DLOAP -12 |
Osmocom Authentication Protocol. More... | |
#define | DLSS7 -13 |
Osmocom SS7. More... | |
#define | DLSCCP -14 |
Osmocom SCCP. More... | |
#define | DLSUA -15 |
Osmocom SUA. More... | |
#define | DLM3UA -16 |
Osmocom M3UA. More... | |
#define | DLMGCP -17 |
Osmocom MGCP. More... | |
#define | DLJIBUF -18 |
Osmocom Jitter Buffer. More... | |
#define | DLRSPRO -19 |
Osmocom Remote SIM Protocol. More... | |
#define | DLNS -20 |
Osmocom NS layer. More... | |
#define | DLBSSGP -21 |
Osmocom BSSGP layer. More... | |
#define | OSMO_NUM_DLIB 21 |
Number of logging sub-systems in libraries. More... | |
#define | OSMO_LOGCOLOR_NORMAL NULL |
#define | OSMO_LOGCOLOR_RED "\033[1;31m" |
#define | OSMO_LOGCOLOR_GREEN "\033[1;32m" |
#define | OSMO_LOGCOLOR_YELLOW "\033[1;33m" |
#define | OSMO_LOGCOLOR_BLUE "\033[1;34m" |
#define | OSMO_LOGCOLOR_PURPLE "\033[1;35m" |
#define | OSMO_LOGCOLOR_CYAN "\033[1;36m" |
#define | OSMO_LOGCOLOR_DARKRED "\033[31m" |
#define | OSMO_LOGCOLOR_DARKGREEN "\033[32m" |
#define | OSMO_LOGCOLOR_DARKYELLOW "\033[33m" |
#define | OSMO_LOGCOLOR_DARKBLUE "\033[34m" |
#define | OSMO_LOGCOLOR_DARKPURPLE "\033[35m" |
#define | OSMO_LOGCOLOR_DARKCYAN "\033[36m" |
#define | OSMO_LOGCOLOR_DARKGREY "\033[1;30m" |
#define | OSMO_LOGCOLOR_GREY "\033[37m" |
#define | OSMO_LOGCOLOR_BRIGHTWHITE "\033[1;37m" |
#define | OSMO_LOGCOLOR_END "\033[0;m" |
#define | LOG_MAX_CTX _LOG_CTX_COUNT |
Maximum number of logging contexts. More... | |
#define | LOG_MAX_FILTERS _LOG_FLT_COUNT |
Maximum number of logging filters. More... | |
#define | LOG_FILTER_ALL (1<<LOG_FLT_ALL) |
Compatibility with older libosmocore versions. More... | |
#define | GPRS_CTX_NSVC LOG_CTX_GB_NSVC |
Compatibility with older libosmocore versions. More... | |
#define | GPRS_CTX_BVC LOG_CTX_GB_BVC |
Compatibility with older libosmocore versions. More... | |
#define | LOG_MTX_DEBUG 0 |
#define | log_tgt_mutex_lock() log_tgt_mutex_lock_impl() |
#define | log_tgt_mutex_unlock() log_tgt_mutex_unlock_impl() |
#define | MAX_LOG_SIZE 4096 |
#define | INT2IDX(x) (-1*(x)-1) |
#define | GSMTAP_LOG_MAX_SIZE 4096 |
#define | SD_JOURNAL_SUPPRESS_LOCATION |
Typedefs | |
typedef int | log_filter(const struct log_context *ctx, struct log_target *target) |
Log filter function. More... | |
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_ctx_index { LOG_CTX_GB_NSVC, LOG_CTX_GB_BVC, LOG_CTX_BSC_SUBSCR, LOG_CTX_VLR_SUBSCR, LOG_CTX_L1_SAPI, LOG_CTX_GB_NSE, _LOG_CTX_COUNT } |
Indexes to indicate the object currently acted upon. More... | |
enum | log_filter_index { LOG_FLT_ALL, LOG_FLT_GB_NSVC, LOG_FLT_GB_BVC, LOG_FLT_BSC_SUBSCR, LOG_FLT_VLR_SUBSCR, LOG_FLT_L1_SAPI, LOG_FLT_GB_NSE, _LOG_FLT_COUNT } |
Indexes to indicate objects that should be logged. More... | |
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, LOG_TGT_TYPE_SYSTEMD } |
Type of logging target. More... | |
enum | log_filename_type { LOG_FILENAME_NONE, LOG_FILENAME_PATH, LOG_FILENAME_BASENAME } |
Whether/how to log the source filename (and line number). More... | |
enum | log_filename_pos { LOG_FILENAME_POS_HEADER_END, LOG_FILENAME_POS_LINE_END } |
Where on a log line source file and line should be logged. 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 More... | |
void | logp (int subsys, const char *file, int line, int cont, const char *format,...) |
logging function used by DEBUGP() macro More... | |
void | logp2 (int subsys, unsigned int level, const char *file, int line, int cont, const char *format,...) |
logging function used by LOGP() macro More... | |
void int | log_init (const struct log_info *inf, void *ctx) |
Initialize the Osmocom logging core. More... | |
void | log_fini (void) |
int | log_check_level (int subsys, unsigned int level) |
Check whether a log entry will be generated. More... | |
void | log_reset_context (void) |
Reset (clear) the logging context. More... | |
int | log_set_context (uint8_t ctx_nr, void *value) |
Set the logging context. More... | |
void | log_set_all_filter (struct log_target *target, int all) |
Enable the LOG_FLT_ALL log filter. More... | |
void | log_set_use_color (struct log_target *target, int use_color) |
Enable or disable the use of colored output. More... | |
void | log_set_print_extended_timestamp (struct log_target *target, int print_timestamp) |
Enable or disable printing of extended timestamps while logging. More... | |
void | log_set_print_timestamp (struct log_target *target, int print_timestamp) |
Enable or disable printing of timestamps while logging. More... | |
void | log_set_print_filename (struct log_target *target, int print_filename) |
Use log_set_print_filename2() instead. More... | |
void | log_set_print_filename2 (struct log_target *target, enum log_filename_type lft) |
Enable or disable printing of the filename while logging. More... | |
void | log_set_print_filename_pos (struct log_target *target, enum log_filename_pos pos) |
Set the position where on a log line the source file info should be logged. More... | |
void | log_set_print_category (struct log_target *target, int print_category) |
Enable or disable printing of the category name. More... | |
void | log_set_print_category_hex (struct log_target *target, int print_category_hex) |
Enable or disable printing of the category number in hex ('<000b>'). More... | |
void | log_set_print_level (struct log_target *target, int print_level) |
Enable or disable printing of the log level name. More... | |
void | log_set_log_level (struct log_target *target, int log_level) |
Set the global log level for a given log target. More... | |
void | log_parse_category_mask (struct log_target *target, const char *_mask) |
parse the log category mask More... | |
const char * | log_category_name (int subsys) |
int | log_parse_level (const char *lvl) |
Parse a human-readable log level into a numeric value. More... | |
const char * | log_level_str (unsigned int lvl) |
convert a numeric log level into human-readable string More... | |
int | log_parse_category (const char *category) |
parse a human-readable log category into numeric form More... | |
void | log_set_category_filter (struct log_target *target, int category, int enable, int level) |
Set a category filter on a given log target. More... | |
struct log_target * | log_target_create (void) |
Create a new log target skeleton. More... | |
void | log_target_destroy (struct log_target *target) |
Unregister, close and delete a log target. More... | |
struct log_target * | log_target_create_stderr (void) |
Create the STDERR log target. More... | |
struct log_target * | log_target_create_file (const char *fname) |
Create a new file-based log target. More... | |
struct log_target * | log_target_create_syslog (const char *ident, int option, int facility) |
Create a new logging target for syslog logging. More... | |
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. More... | |
struct log_target * | log_target_create_systemd (bool raw) |
Create a new logging target for systemd journal logging. More... | |
void | log_target_systemd_set_raw (struct log_target *target, bool raw) |
Change meta information handling of an existing logging target. More... | |
int | log_target_file_reopen (struct log_target *target) |
close and re-open a log file (for log file rotation) More... | |
int | log_targets_reopen (void) |
close and re-open all log files (for log file rotation) More... | |
void | log_add_target (struct log_target *target) |
Register a new log target with the logging core. More... | |
void | log_del_target (struct log_target *target) |
Unregister a log target from the logging core. More... | |
struct log_target * | log_target_find (int type, const char *fname) |
Find a registered log target. More... | |
void | log_enable_multithread (void) |
Enable multithread support (mutex) in libosmocore logging system. More... | |
void | log_tgt_mutex_lock_impl (void) |
Acquire the osmo_log_tgt_mutex. More... | |
void | log_tgt_mutex_unlock_impl (void) |
Release the osmo_log_tgt_mutex. More... | |
osmo_static_assert (_LOG_CTX_COUNT<=ARRAY_SIZE(((struct log_context *) NULL) ->ctx), enum_logging_ctx_items_fit_in_struct_log_context) | |
osmo_static_assert (_LOG_FLT_COUNT<=ARRAY_SIZE(((struct log_target *) NULL) ->filter_data), enum_logging_filters_fit_in_log_target_filter_data) | |
osmo_static_assert (_LOG_FLT_COUNT<=8 *sizeof(((struct log_target *) NULL) ->filter_map), enum_logging_filters_fit_in_log_target_filter_map) | |
LLIST_HEAD (osmo_log_target_list) | |
void | assert_loginfo (const char *src) |
static int | subsys_lib2index (int subsys) |
static const char * | color (int subsys) |
static const char * | level_color (int level) |
static const char * | const_basename (const char *path) |
static void | _output (struct log_target *target, unsigned int subsys, unsigned int level, const char *file, int line, int cont, const char *format, va_list ap) |
static int | map_subsys (int subsys) |
static bool | should_log_to_target (struct log_target *tar, int subsys, int level) |
static void | _file_output (struct log_target *target, unsigned int level, const char *log) |
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 | _systemd_output (struct log_target *target, unsigned int level, const char *log) |
static void | _systemd_raw_output (struct log_target *target, int subsys, unsigned int level, const char *file, int line, int cont, const char *format, va_list ap) |
Variables | |
struct log_info * | osmo_log_info |
static struct log_context | log_context |
void * | tall_log_ctx = NULL |
static pthread_mutex_t | osmo_log_tgt_mutex |
This mutex must be held while using osmo_log_target_list or any of its log_targets in a multithread program. More... | |
static bool | osmo_log_tgt_mutex_on = false |
const struct value_string | loglevel_strs [] |
static const struct log_info_cat | internal_cat [OSMO_NUM_DLIB] |
static const struct value_string | level_colors [] |
libosmocore Logging sub-system
#define DEBUG |
#define DEBUGP | ( | ss, | |
fmt, | |||
args... | |||
) | LOGP(ss, LOGL_DEBUG, 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 |
Referenced by rate_ctrl_group_desc_validate().
#define DEBUGPC | ( | ss, | |
fmt, | |||
args... | |||
) | LOGPC(ss, LOGL_DEBUG, fmt, ##args) |
#define DLBSSGP -21 |
Osmocom BSSGP layer.
#define DLCTRL -8 |
Control Interface.
#define DLGLOBAL -1 |
global logging
Referenced by _msgb_eq(), _osmo_fsm_inst_dispatch(), addrinfo_helper(), addrinfo_to_sockaddr(), mangle_identifier_ifneeded(), map_subsys(), msgb_alloc_c(), osmo_close_all_fds_above(), osmo_fsm_inst_update_id_f(), osmo_fsm_register(), osmo_mnl_fd_cb(), osmo_mnl_init(), osmo_sock_init(), osmo_sock_init2(), osmo_sock_init2_multiaddr(), osmo_sock_init_osa(), osmo_sock_init_sa(), osmo_sock_init_tail(), osmo_sock_unix_init(), osmo_sockaddr_is_local(), osmo_system_nowait2(), osmo_wqueue_enqueue(), rate_ctr_group_alloc(), rate_ctr_group_desc_mangle(), rate_ctrl_group_desc_validate(), socket_helper(), socket_helper_multiaddr(), and socket_helper_osa().
#define DLGSUP -11 |
Generic Subscriber Update Protocol.
#define DLGTP -9 |
GTP (GPRS Tunneling Protocol.
#define DLINP -3 |
(A-bis) Input sub-system
#define DLJIBUF -18 |
Osmocom Jitter Buffer.
#define DLLAPD -2 |
LAPD implementation.
#define DLM3UA -16 |
Osmocom M3UA.
#define DLMGCP -17 |
Osmocom MGCP.
#define DLMI -5 |
ISDN-layer below input sub-system.
#define DLMIB -6 |
ISDN layer B-channel.
#define DLMUX -4 |
Osmocom Multiplex (Osmux)
#define DLNS -20 |
Osmocom NS layer.
#define DLOAP -12 |
Osmocom Authentication Protocol.
#define DLRSPRO -19 |
Osmocom Remote SIM Protocol.
#define DLSCCP -14 |
Osmocom SCCP.
#define DLSMS -7 |
SMS sub-system.
#define DLSS7 -13 |
Osmocom SS7.
#define DLSTATS -10 |
Statistics.
Referenced by osmo_stats_reporter_log_send(), osmo_stats_timer_cb(), and start_timer().
#define DLSUA -15 |
Osmocom SUA.
#define GPRS_CTX_BVC LOG_CTX_GB_BVC |
Compatibility with older libosmocore versions.
#define GPRS_CTX_NSVC LOG_CTX_GB_NSVC |
Compatibility with older libosmocore versions.
#define GSMTAP_LOG_MAX_SIZE 4096 |
Referenced by _gsmtap_raw_output().
#define INT2IDX | ( | x | ) | (-1*(x)-1) |
#define LOG_FILTER_ALL (1<<LOG_FLT_ALL) |
Compatibility with older libosmocore versions.
#define LOG_MAX_CTX _LOG_CTX_COUNT |
Maximum number of logging contexts.
Referenced by log_set_context().
#define LOG_MAX_FILTERS _LOG_FLT_COUNT |
Maximum number of logging filters.
#define LOG_MTX_DEBUG 0 |
#define log_tgt_mutex_lock | ( | ) | log_tgt_mutex_lock_impl() |
Referenced by log_check_level(), log_fini(), log_targets_reopen(), and osmo_vlogp().
#define log_tgt_mutex_unlock | ( | ) | log_tgt_mutex_unlock_impl() |
Referenced by log_check_level(), log_fini(), log_targets_reopen(), and osmo_vlogp().
#define LOGL_DEBUG 1 |
#define LOGL_ERROR 7 |
error condition, requires user action
Referenced by _osmo_fsm_inst_dispatch(), _osmo_fsm_inst_term_children(), addrinfo_helper(), addrinfo_to_sockaddr(), logp2syslog_level(), osmo_close_all_fds_above(), osmo_fsm_inst_update_id_f(), osmo_fsm_register(), osmo_mnl_fd_cb(), osmo_mnl_init(), osmo_sock_init(), osmo_sock_init2(), osmo_sock_init2_multiaddr(), osmo_sock_init_osa(), osmo_sock_init_sa(), osmo_sock_init_tail(), osmo_sock_unix_init(), osmo_sockaddr_is_local(), osmo_system_nowait2(), osmo_wqueue_enqueue(), rate_ctr_group_alloc(), rate_ctr_group_desc_mangle(), rate_ctrl_group_desc_validate(), socket_helper(), socket_helper_multiaddr(), socket_helper_osa(), start_timer(), and state_chg().
#define LOGL_FATAL 8 |
fatal, program aborted
Referenced by _msgb_eq(), level_color(), logp2syslog_level(), and msgb_alloc_c().
#define LOGL_INFO 3 |
general information
Referenced by logp2syslog_level(), osmo_stats_reporter_log_send(), rate_ctr_group_desc_mangle(), and start_timer().
#define LOGL_NOTICE 5 |
abnormal/unexpected condition
Referenced by log_init(), logp2syslog_level(), mangle_identifier_ifneeded(), osmo_sock_init2_multiaddr(), and osmo_stats_timer_cb().
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_backtrace(), addrinfo_helper(), addrinfo_to_sockaddr(), mangle_identifier_ifneeded(), msgb_alloc_c(), osmo_close_all_fds_above(), osmo_fsm_inst_update_id_f(), osmo_fsm_register(), osmo_log_backtrace(), osmo_mnl_fd_cb(), osmo_mnl_init(), osmo_sock_init(), osmo_sock_init2(), osmo_sock_init2_multiaddr(), osmo_sock_init_osa(), osmo_sock_init_sa(), osmo_sock_init_tail(), osmo_sock_unix_init(), osmo_sockaddr_is_local(), osmo_stats_reporter_log_send(), osmo_stats_timer_cb(), osmo_system_nowait2(), osmo_wqueue_enqueue(), rate_ctr_group_alloc(), rate_ctr_group_desc_mangle(), rate_ctrl_group_desc_validate(), socket_helper(), socket_helper_multiaddr(), socket_helper_osa(), and start_timer().
#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 |
Referenced by _msgb_eq().
#define LOGPSRC | ( | ss, | |
level, | |||
caller_file, | |||
caller_line, | |||
fmt, | |||
args... | |||
) | LOGPSRCC(ss, level, caller_file, caller_line, 0, fmt, ##args) |
Log through the Osmocom logging framework with explicit source.
If caller_file is passed as NULL, 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. FILE) |
[in] | caller_line | caller's source line nr (e.g. LINE) |
[in] | fmt | format string |
[in] | args | variable argument list |
Referenced by _msgb_eq(), and _osmo_fsm_inst_dispatch().
#define LOGPSRCC | ( | ss, | |
level, | |||
caller_file, | |||
caller_line, | |||
cont, | |||
fmt, | |||
args... | |||
) |
Log through the Osmocom logging framework with explicit source.
If caller_file is passed as NULL, 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. FILE) |
[in] | caller_line | caller's source line nr (e.g. LINE) |
[in] | cont | continuation (1) or new line (0) |
[in] | fmt | format string |
[in] | args | variable argument list |
#define MAX_LOG_SIZE 4096 |
Referenced by _output().
#define OSMO_LOGCOLOR_BLUE "\033[1;34m" |
#define OSMO_LOGCOLOR_BRIGHTWHITE "\033[1;37m" |
#define OSMO_LOGCOLOR_CYAN "\033[1;36m" |
#define OSMO_LOGCOLOR_DARKBLUE "\033[34m" |
#define OSMO_LOGCOLOR_DARKCYAN "\033[36m" |
#define OSMO_LOGCOLOR_DARKGREEN "\033[32m" |
#define OSMO_LOGCOLOR_DARKGREY "\033[1;30m" |
#define OSMO_LOGCOLOR_DARKPURPLE "\033[35m" |
#define OSMO_LOGCOLOR_DARKRED "\033[31m" |
#define OSMO_LOGCOLOR_DARKYELLOW "\033[33m" |
#define OSMO_LOGCOLOR_END "\033[0;m" |
Referenced by _output().
#define OSMO_LOGCOLOR_GREEN "\033[1;32m" |
#define OSMO_LOGCOLOR_GREY "\033[37m" |
#define OSMO_LOGCOLOR_NORMAL NULL |
#define OSMO_LOGCOLOR_PURPLE "\033[1;35m" |
#define OSMO_LOGCOLOR_RED "\033[1;31m" |
#define OSMO_LOGCOLOR_YELLOW "\033[1;33m" |
#define OSMO_NUM_DLIB 21 |
Number of logging sub-systems in libraries.
#define SD_JOURNAL_SUPPRESS_LOCATION |
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) |
enum log_ctx_index |
Indexes to indicate the object currently acted upon.
Array indexes for the global log_context array.
Enumerator | |
---|---|
LOG_CTX_GB_NSVC | |
LOG_CTX_GB_BVC | |
LOG_CTX_BSC_SUBSCR | |
LOG_CTX_VLR_SUBSCR | |
LOG_CTX_L1_SAPI | |
LOG_CTX_GB_NSE | |
_LOG_CTX_COUNT |
enum log_filename_pos |
enum log_filename_type |
enum log_filter_index |
enum log_target_type |
Type of logging target.
|
static |
References log_target::tgt_file.
Referenced by log_target_create_file(), and log_target_create_stderr().
|
static |
References GSMTAP_LOG_MAX_SIZE, gsmtap_sendmsg(), GSMTAP_TYPE_OSMOCORE_LOG, GSMTAP_VERSION, gsmtap_hdr::hdr_len, level, gsmtap_osmocore_log_hdr::level, gsmtap_osmocore_log_hdr::line_nr, log_category_name(), msg, msgb_alloc(), msgb_free(), msgb_put(), msgb_tailroom(), gsmtap_osmocore_log_hdr::name, osmo_gettimeofday(), osmo_htonl, OSMO_STRLCPY_ARRAY, gsmtap_osmocore_log_hdr::proc_name, gsmtap_osmocore_log_hdr::sec, gsmtap_osmocore_log_hdr::src_file, gsmtap_osmocore_log_hdr::subsys, msgb::tail, log_target::tgt_gsmtap, gsmtap_osmocore_log_hdr::ts, gsmtap_hdr::type, gsmtap_osmocore_log_hdr::usec, and gsmtap_hdr::version.
Referenced by log_target_create_gsmtap().
|
static |
References color(), const_basename(), len(), level_color(), log_category_name(), LOG_FILENAME_BASENAME, LOG_FILENAME_NONE, LOG_FILENAME_PATH, LOG_FILENAME_POS_HEADER_END, LOG_FILENAME_POS_LINE_END, log_level_str(), MAX_LOG_SIZE, osmo_gettimeofday(), OSMO_LOGCOLOR_END, OSMO_SNPRINTF_RET, log_target::output, log_target::print_category, log_target::print_category_hex, log_target::print_ext_timestamp, log_target::print_filename2, log_target::print_filename_pos, log_target::print_level, log_target::print_timestamp, time, and log_target::use_color.
Referenced by osmo_vlogp().
|
static |
References logp2syslog_level().
Referenced by log_target_create_syslog().
|
static |
References logp2syslog_level().
Referenced by log_target_systemd_set_raw().
|
static |
References log_category_name(), and logp2syslog_level().
Referenced by log_target_systemd_set_raw().
void assert_loginfo | ( | const char * | src | ) |
References OSMO_ASSERT.
Referenced by log_check_level(), log_parse_category(), log_parse_category_mask(), and log_target_create().
|
static |
References log_info::cat, log_info_cat::color, and subsys.
Referenced by _output(), and rb_erase().
|
static |
Referenced by _output().
|
static |
References c, get_value_string(), get_value_string_or_null(), and LOGL_FATAL.
Referenced by _output().
LLIST_HEAD | ( | osmo_log_target_list | ) |
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, llist_add_tail(), and osmo_log_target_list.
Referenced by osmo_init_logging2().
const char * log_category_name | ( | int | subsys | ) |
References log_info::cat, log_info_cat::name, and subsys.
Referenced by _gsmtap_raw_output(), _output(), and _systemd_raw_output().
int log_check_level | ( | int | subsys, |
unsigned int | level | ||
) |
Check whether a log entry will be generated.
References assert_loginfo(), log_target::entry, llist_for_each_entry, log_tgt_mutex_lock, log_tgt_mutex_unlock, map_subsys(), osmo_log_target_list, and should_log_to_target().
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 log_enable_multithread | ( | void | ) |
Enable multithread support (mutex) in libosmocore logging system.
Must be called by processes willing to use logging subsystem from several threads. Once enabled, it's not possible to disable it again.
Referenced by log_tgt_mutex_unlock_impl().
void log_fini | ( | void | ) |
int log_init | ( | const struct log_info * | inf, |
void * | ctx | ||
) |
Initialize the Osmocom logging core.
[in] | inf | Information regarding logging categories, could be NULL |
[in] | ctx | talloc context for logging allocations |
If inf is NULL then only library-internal categories are initialized.
References ARRAY_SIZE, log_info::cat, log_info::filter_fn, LOGL_NOTICE, log_info_cat::loglevel, log_info::num_cat, log_info::num_cat_user, and OSMO_ASSERT.
Referenced by osmo_init_logging2().
const char * log_level_str | ( | unsigned int | lvl | ) |
convert a numeric log level into human-readable string
[in] | lvl | numeric log level |
References get_value_string().
Referenced by _output().
int log_parse_category | ( | const char * | category | ) |
parse a human-readable log category into numeric form
[in] | category | human-readable log category name |
References assert_loginfo(), 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 assert_loginfo(), log_info::cat, log_target::categories, log_category::enabled, length, level, 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.
[in] | lvl | zero-terminated string containing log level name |
References get_string_value().
void log_reset_context | ( | void | ) |
Reset (clear) the logging context.
Referenced by osmo_fd_disp_fds(), and poll_disp_fds().
void log_set_all_filter | ( | struct log_target * | target, |
int | all | ||
) |
Enable the LOG_FLT_ALL log filter.
[in] | target | Log target to be affected |
[in] | all | enable (1) or disable (0) the ALL filter |
When the LOG_FLT_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, and LOG_FLT_ALL.
Referenced by osmo_init_logging2().
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, level, log_category::loglevel, and map_subsys().
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_context::ctx, and 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_category | 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_category_hex | ( | struct log_target * | target, |
int | print_category_hex | ||
) |
Enable or disable printing of the category number in hex ('<000b>').
[in] | target | Log target to be affected. |
[in] | print_category_hex | Enable (1) or disable (0) hex category. |
References log_target::print_category_hex.
Referenced by log_set_print_filename().
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 | ||
) |
Use log_set_print_filename2() instead.
Call log_set_print_filename2() with LOG_FILENAME_PATH or LOG_FILENAME_NONE, as well as call log_set_print_category_hex() with the argument passed to this function. This is to mirror legacy behavior, which combined the category in hex with the filename. For example, if the category-hex output were no longer affected by log_set_print_filename(), many unit tests (in libosmocore as well as dependent projects) would fail since they expect the category to disappear along with the filename.
[in] | target | Log target to be affected |
[in] | print_filename | Enable (1) or disable (0) filenames |
References LOG_FILENAME_NONE, LOG_FILENAME_PATH, log_set_print_category_hex(), and log_set_print_filename2().
void log_set_print_filename2 | ( | struct log_target * | target, |
enum log_filename_type | lft | ||
) |
Enable or disable printing of the filename while logging.
[in] | target | Log target to be affected. |
[in] | lft | An LOG_FILENAME_* enum value. LOG_FILENAME_NONE omits the source file and line information from logs. LOG_FILENAME_PATH prints the entire source file path as passed to LOGP macros. |
References log_target::print_filename2.
Referenced by log_set_print_filename().
void log_set_print_filename_pos | ( | struct log_target * | target, |
enum log_filename_pos | pos | ||
) |
Set the position where on a log line the source file info should be logged.
[in] | target | Log target to be affected. |
[in] | pos | A LOG_FILENAME_POS_* enum value. LOG_FILENAME_POS_DEFAULT logs just before the caller supplied log message. LOG_FILENAME_POS_LAST logs only at the end of a log line, where the caller issued an ' ' to end the |
References log_target::print_filename_pos.
void log_set_print_level | ( | struct log_target * | target, |
int | print_level | ||
) |
Enable or disable printing of the log level name.
[in] | target | Log target to be affected |
[in] | print_level | Enable (1) or disable (0) log level name |
Print the log level name in front of every log message.
References log_target::print_level.
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 assert_loginfo(), log_info::cat, log_target::categories, log_category::enabled, log_info_cat::enabled, log_target::entry, INIT_LLIST_HEAD, LOG_FILENAME_PATH, log_category::loglevel, log_info_cat::loglevel, log_target::loglevel, log_info::num_cat, log_target::print_category_hex, log_target::print_filename2, 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(), log_target_create_syslog(), and log_target_create_systemd().
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 _file_output(), log_target_create(), log_target_destroy(), LOG_TGT_TYPE_FILE, log_target::output, log_target::tgt_file, 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] | host | remote host to send the logs to |
[in] | port | remote port to send the logs to |
[in] | ident | string identifier |
[in] | ofd_wq_mode | register osmo_wqueue (1) or not (0) |
[in] | add_sink | add GSMTAP sink or not |
References _gsmtap_raw_output(), gsmtap_source_add_sink(), gsmtap_source_init(), log_target_create(), log_target_destroy(), LOG_TGT_TYPE_GSMTAP, log_target::raw_output, log_target::tgt_gsmtap, and log_target::type.
struct log_target * log_target_create_stderr | ( | void | ) |
Create the STDERR log target.
References _file_output(), log_target_create(), LOG_TGT_TYPE_STDERR, log_target::output, log_target::tgt_file, and log_target::type.
Referenced by osmo_init_logging2().
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 _syslog_output(), log_target::facility, log_target_create(), LOG_TGT_TYPE_SYSLOG, log_target::output, log_target::tgt_syslog, and log_target::type.
struct log_target * log_target_create_systemd | ( | bool | raw | ) |
Create a new logging target for systemd journal logging.
[in] | raw | whether to offload rendering of the meta information (location, category) to systemd-journal. |
References log_target_create(), log_target_systemd_set_raw(), LOG_TGT_TYPE_SYSTEMD, and log_target::type.
void log_target_destroy | ( | struct log_target * | target | ) |
Unregister, close and delete a log target.
[in] | target | log target to unregister, close and delete |
References log_del_target(), LOG_TGT_TYPE_FILE, LOG_TGT_TYPE_SYSLOG, log_target::tgt_file, and log_target::type.
Referenced by log_fini(), log_target_create_file(), 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 |
References log_target::tgt_file.
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, LOG_TGT_TYPE_GSMTAP, osmo_log_target_list, log_target::tgt_file, log_target::tgt_gsmtap, and log_target::type.
void log_target_systemd_set_raw | ( | struct log_target * | target, |
bool | raw | ||
) |
Change meta information handling of an existing logging target.
[in] | target | logging target to be modified. |
[in] | raw | whether to offload rendering of the meta information (location, category) to systemd-journal. |
References _systemd_output(), _systemd_raw_output(), log_target::output, log_target::raw, log_target::raw_output, and log_target::sd_journal.
Referenced by log_target_create_systemd().
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_mutex_lock, log_tgt_mutex_unlock, LOG_TGT_TYPE_FILE, osmo_log_target_list, and log_target::type.
Referenced by sighup_hdlr().
void log_tgt_mutex_lock_impl | ( | void | ) |
Acquire the osmo_log_tgt_mutex.
Don't use this function directly, always use macro log_tgt_mutex_lock() instead.
Referenced by log_tgt_mutex_unlock_impl().
void log_tgt_mutex_unlock_impl | ( | void | ) |
Release the osmo_log_tgt_mutex.
Don't use this function directly, always use macro log_tgt_mutex_unlock() instead.
References log_enable_multithread(), and log_tgt_mutex_lock_impl().
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 logp2 | ( | int | subsys, |
unsigned int | level, | ||
const char * | file, | ||
int | line, | ||
int | cont, | ||
const char * | format, | ||
... | |||
) |
logging function used by LOGP() macro
[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 |
References osmo_vlogp().
|
static |
References LOGL_ERROR, LOGL_FATAL, LOGL_INFO, and LOGL_NOTICE.
Referenced by _syslog_output().
|
inlinestatic |
References DLGLOBAL, log_info::num_cat, log_info::num_cat_user, OSMO_ASSERT, subsys, and subsys_lib2index().
Referenced by log_check_level(), log_set_category_filter(), and osmo_vlogp().
osmo_static_assert | ( | _LOG_CTX_COUNT<= | ARRAY_SIZE((struct log_context *) NULL) ->ctx, |
enum_logging_ctx_items_fit_in_struct_log_context | |||
) |
osmo_static_assert | ( | _LOG_FLT_COUNT<= | ARRAY_SIZE((struct log_target *) NULL) ->filter_data, |
enum_logging_filters_fit_in_log_target_filter_data | |||
) |
osmo_static_assert | ( | _LOG_FLT_COUNT<=8 * | sizeof((struct log_target *) NULL) ->filter_map, |
enum_logging_filters_fit_in_log_target_filter_map | |||
) |
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 _output(), log_target::entry, llist_for_each_entry, log_tgt_mutex_lock, log_tgt_mutex_unlock, map_subsys(), osmo_log_target_list, log_target::raw_output, and should_log_to_target().
|
inlinestatic |
References log_target::categories, log_category::enabled, log_info::filter_fn, log_target::filter_map, LOG_FLT_ALL, log_category::loglevel, log_target::loglevel, and subsys.
Referenced by log_check_level(), and osmo_vlogp().
|
static |
References log_info::num_cat_user.
Referenced by map_subsys().
|
static |
|
static |
|
static |
const struct value_string loglevel_strs[] |
struct log_info* osmo_log_info |
|
static |
This mutex must be held while using osmo_log_target_list or any of its log_targets in a multithread program.
Prevents race conditions between threads like producing unordered timestamps or VTY deleting a target while another thread is writing to it
|
static |
void* tall_log_ctx = NULL |