|
YAZ 5.38.1
|
Logging utility. More...
#include <yaz/yconfig.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdarg.h>#include <errno.h>#include <time.h>#include <yaz/yaz-iconv.h>#include <yaz/thread_id.h>#include <yaz/log.h>#include <yaz/mutex.h>#include <yaz/snprintf.h>#include <yaz/xmalloc.h>Go to the source code of this file.
Data Structures | |
| struct | [struct].yaz_log_info |
| struct | [struct].mask_names |
Macros | |
| #define | TIMEFORMAT_LEN 50 |
| #define | TID_LEN 30 |
| #define | MAX_MASK_NAMES 35 |
Enumerations | |
| enum | l_file_type { use_stderr , use_none , use_file } |
Functions | |
| static void | yaz_log_open (void) |
| void | yaz_log_lock (void) |
| Lock for YAZ log writes. | |
| void | yaz_log_unlock (void) |
| Unlock for YAZ log writes. | |
| void | yaz_log_init_globals (void) |
| FILE * | yaz_log_file (void) |
| returns FILE handle for log or NULL if no file is in use | |
| void | yaz_log_close (void) |
| void | yaz_log_deinit_globals (void) |
| void | yaz_log_init_file (const char *fname) |
| sets log file | |
| static void | rotate_log (const char *cur_fname) |
| void | yaz_log_init_level (int level) |
| sets log level | |
| void | yaz_log_init_prefix (const char *prefix) |
| sets log message prefix | |
| void | yaz_log_init_prefix2 (const char *prefix) |
| sets second log message prefix | |
| void | yaz_log_init (int level, const char *prefix, const char *fname) |
| sets level, prefix and filename for logging | |
| void | yaz_log_init_max_size (int mx) |
| sets limit in bytes for size for log file | |
| void | yaz_log_set_handler (void(*func)(int, const char *, void *), void *info) |
| sets custom log handler | |
| void | log_event_start (void(*func)(int, const char *, void *), void *info) |
| installs hook to be called before each log msg | |
| void | log_event_end (void(*func)(int, const char *, void *), void *info) |
| installs hook to be called after each log msg | |
| static void | yaz_log_open_check (struct tm *tm, int force, const char *filemode) |
| static void | yaz_log_do_reopen (const char *filemode) |
| void | yaz_log_reopen () |
| reopen current log file (unless disabled or stderr) | |
| void | yaz_log_trunc () |
| Truncate the log file. | |
| static void | yaz_strftime (char *dst, size_t sz, const char *fmt, const struct tm *tm) |
| static void | yaz_log_to_file (int level, const char *fmt, va_list ap, const char *error_cp) |
| void | yaz_log (int level, const char *fmt,...) |
| Writes log message. | |
| void | yaz_log_time_format (const char *fmt) |
| sets time format for log mesages | |
| static char * | clean_name (const char *name, size_t len, char *namebuf, size_t buflen) |
| static int | define_module_bit (const char *name) |
| int | yaz_log_module_level (const char *name) |
| returns level for module | |
| int | yaz_log_mask_str (const char *str) |
| converts log level string to log level (integer) | |
| int | yaz_log_mask_str_x (const char *str, int level) |
| converts log level string to log level with "start" level | |
Variables | |
| static int | l_level = YLOG_DEFAULT_LEVEL |
| struct | yaz_log_info |
| static void(*) | start_hook_func (int, const char *, void *) = NULL |
| static void * | start_hook_info |
| static void(*) | end_hook_func (int, const char *, void *) = NULL |
| static void * | end_hook_info |
| static void(*) | hook_func (int, const char *, void *) = NULL |
| static void * | hook_info |
| static char | l_old_default_format [] = "%H:%M:%S-%d/%m" |
| static char | l_new_default_format [] = "%Y%m%d-%H%M%S" |
| static char | l_custom_format [TIMEFORMAT_LEN] = "" |
| static char * | l_actual_format = l_old_default_format |
| static int | l_max_size = 0 |
| static struct | mask_names [MAX_MASK_NAMES] |
| static unsigned int | next_log_bit = YLOG_LAST_BIT<<1 |
| static int | yaz_log_reopen_flag = 0 |
| static YAZ_MUTEX | log_mutex = 0 |
Logging utility.
Definition in file log.c.
| #define MAX_MASK_NAMES 35 |
Definition at line 81 of file log.c.
Referenced by define_module_bit().
| #define TID_LEN 30 |
Definition at line 68 of file log.c.
Referenced by yaz_log_to_file().
| #define TIMEFORMAT_LEN 50 |
Definition at line 67 of file log.c.
Referenced by yaz_log_time_format(), and yaz_log_to_file().
| enum l_file_type |
|
static |
cleans a loglevel name from leading paths and suffixes
Definition at line 548 of file log.c.
References clean_name().
Referenced by clean_name(), yaz_log_mask_str_x(), and yaz_log_module_level().
|
static |
Definition at line 563 of file log.c.
References define_module_bit(), malloc(), mask_names, MAX_MASK_NAMES, next_log_bit, yaz_log(), and YLOG_WARN.
Referenced by define_module_bit(), and yaz_log_mask_str_x().
| void log_event_end | ( | void(* | func )(int level, const char *msg, void *info), |
| void * | info ) |
installs hook to be called after each log msg
| func | function to be called |
| info | user data to be passed to function |
Definition at line 310 of file log.c.
References end_hook_func, end_hook_info, and log_event_end().
Referenced by log_event_end().
| void log_event_start | ( | void(* | func )(int level, const char *msg, void *info), |
| void * | info ) |
installs hook to be called before each log msg
| func | function to be called |
| info | user data to be passed to function |
Definition at line 304 of file log.c.
References log_event_start(), start_hook_func, and start_hook_info.
Referenced by log_event_start().
|
static |
Definition at line 190 of file log.c.
References rotate_log(), yaz_log_close(), and yaz_snprintf().
Referenced by rotate_log(), and yaz_log_open_check().
| void yaz_log | ( | int | level, |
| const char * | fmt, | ||
| ... ) |
Writes log message.
| level | log level mask |
| fmt | format string ala printf |
Writes an entry in the log. Defaults to stderr if not initialized or to a file with yaz_log_init_file(). The level must match the level set via yaz_log_init_level(), optionally defined via yaz_log_mask_str().
Definition at line 487 of file log.c.
References end_hook_func, end_hook_info, hook_func, hook_info, l_level, start_hook_func, start_hook_info, yaz_init_globals(), yaz_log(), yaz_log_file(), yaz_log_to_file(), yaz_strerror(), yaz_vsnprintf(), and YLOG_ERRNO.
Referenced by add_listener(), addterms(), assoc_init_reset(), build_facet_response(), ccl_qual_field(), check_ip_tcpd(), check_slow(), completeBER(), completeBER_n(), config_include_one(), construct_rdf_lookup(), cont_connect(), control_association(), convert_rdf_lookup(), cql2pqf(), cql_transform_parse_tok_line(), create_association(), create_net_socket(), define_module_bit(), destroy_rdf_lookup(), diagrec(), do_close_req(), do_read(), do_write_ex(), encode_APDU(), free_block(), get_block(), get_zoom_facet_field(), gfs_server_chdir(), handle_http(), handle_srw_response(), handle_Z3950_records(), inetd_connection(), init_diagnostics(), iochan_event_loop(), ir_read(), ir_session(), listener(), log_comstack_error(), log_scan_term_level(), log_warn(), new_session(), nmem_malloc(), nmem_reset(), odr_createmem(), odr_destroy(), odr_reset(), pack_records(), process_close(), process_deleteRequest(), process_ESRequest(), process_gdu_response(), process_http_request(), process_initRequest(), process_presentRequest(), process_scanRequest(), process_searchRequest(), process_sortRequest(), process_z_request(), rdf_lookup_debug_comment(), rdf_lookup_node(), read_file(), read_grs1(), readconf(), response_searchRequest(), resultset_destroy(), send_APDU(), send_package(), send_Z3950_sort(), srw_bend_explain(), srw_bend_init(), srw_bend_scan(), srw_bend_search(), srw_bend_update(), statserv_sc_main(), statserv_setcontrol(), surrogatediagrec(), tcpip_accept(), tcpip_bind(), tcpip_close(), tcpip_connect(), tcpip_get(), tcpip_listen(), tcpip_put(), tcpip_rcvconnect(), tcpip_type(), unix_accept(), unix_bind(), unix_close(), unix_connect(), unix_get(), unix_listen(), unix_put(), unix_rcvconnect(), unix_straddr1(), unix_strtoaddr(), unix_strtoaddr_ex(), unix_type(), xcalloc_f(), xfree_f(), xmalloc_f(), xml_config_bend_start(), xml_config_bend_stop(), xml_config_get_root(), xml_config_open(), xml_config_read(), xml_error_handler(), xrealloc_f(), xstrdup_f(), yaz_check_print1(), yaz_daemon(), yaz_facet_attr_get_z_attributes(), yaz_log(), yaz_log_init_level(), yaz_log_module_level(), yaz_log_zquery_level(), yaz_mutex_enter(), yaz_mutex_leave(), yaz_sc_program(), yaz_sru_proxy_decode_facet_field(), Z3950_send_present(), Z3950_send_search(), z_External(), zlog_attributes(), zlog_structure(), ZOOM_connection_connect(), ZOOM_connection_create(), ZOOM_connection_destroy(), ZOOM_connection_do_io(), ZOOM_connection_exec_task(), ZOOM_connection_search(), ZOOM_connection_show_task(), ZOOM_connection_show_tasks(), ZOOM_connection_Z3950_search(), ZOOM_connection_Z3950_send_scan(), ZOOM_event_nonblock(), ZOOM_handle_facet_list(), ZOOM_handle_Z3950_apdu(), ZOOM_memcached_add(), ZOOM_memcached_hitcount(), ZOOM_memcached_lookup(), ZOOM_memcached_search(), ZOOM_resultset_addref(), ZOOM_resultset_create(), ZOOM_resultset_records(), ZOOM_resultset_retrieve(), ZOOM_resultset_sort1(), ZOOM_set_dset_error(), zoom_yaz_str_to_z3950oid(), ztest_esrequest(), and ztest_search().
| void yaz_log_close | ( | void | ) |
Definition at line 150 of file log.c.
References use_file, yaz_log_close(), and yaz_log_info.
Referenced by rotate_log(), yaz_log_close(), yaz_log_deinit_globals(), yaz_log_init_file(), and yaz_log_open_check().
| void yaz_log_deinit_globals | ( | void | ) |
Definition at line 159 of file log.c.
References log_mutex, yaz_log_close(), yaz_log_deinit_globals(), and yaz_mutex_destroy().
Referenced by yaz_deinit_globals(), and yaz_log_deinit_globals().
|
static |
Definition at line 372 of file log.c.
References yaz_log_do_reopen(), yaz_log_lock(), yaz_log_open_check(), and yaz_log_unlock().
Referenced by yaz_log_do_reopen(), yaz_log_open(), and yaz_log_trunc().
| FILE * yaz_log_file | ( | void | ) |
returns FILE handle for log or NULL if no file is in use
| FILE | FILE handle in use (possibly stderr) |
| NULL | log is currently not written to a file |
Definition at line 138 of file log.c.
References use_file, use_none, use_stderr, yaz_log_file(), and yaz_log_info.
Referenced by cql_transform_parse_tok_line(), create_association(), do_read(), ir_read(), yaz_daemon(), yaz_log(), yaz_log_file(), yaz_log_to_file(), ZOOM_connection_connect(), and ztest_esrequest().
| void yaz_log_init | ( | int | level, |
| const char * | prefix, | ||
| const char * | fname ) |
sets level, prefix and filename for logging
| level | log level |
| prefix | log message prefix |
| fname | filename |
If fname is NULL, the filename logging is not changed.
Definition at line 281 of file log.c.
References yaz_init_globals(), yaz_log_init(), yaz_log_init_file(), yaz_log_init_level(), and yaz_log_init_prefix().
Referenced by yaz_log_init().
| void yaz_log_init_file | ( | const char * | fname | ) |
sets log file
| fname | filename |
A filename of NULL makes the log to be completely disabled. A filename which is the empty string ("") makes the system log to stderr (which is also the default). Otherwise the filename given is used.
Definition at line 168 of file log.c.
References use_file, use_none, use_stderr, yaz_init_globals(), yaz_log_close(), yaz_log_info, yaz_log_init_file(), and yaz_log_open().
Referenced by check_options(), yaz_check_init_log(), yaz_log_init(), and yaz_log_init_file().
| void yaz_log_init_globals | ( | void | ) |
Definition at line 124 of file log.c.
References l_level, log_mutex, yaz_log_init_globals(), yaz_log_lock(), yaz_log_mask_str_x(), yaz_log_unlock(), and yaz_mutex_create().
Referenced by yaz_init_globals(), and yaz_log_init_globals().
| void yaz_log_init_level | ( | int | level | ) |
sets log level
| level | (combination of YLOG_..) |
Definition at line 228 of file log.c.
References l_level, mask_names, yaz_init_globals(), yaz_log(), yaz_log_init_level(), yaz_log_open(), YLOG_FLUSH, YLOG_LAST_BIT, and YLOG_LOGLVL.
Referenced by check_options(), yaz_log_init(), and yaz_log_init_level().
| void yaz_log_init_max_size | ( | int | mx | ) |
sets limit in bytes for size for log file
| mx | size in bytes |
Sets the max size for a log file. Zero means no limit. Negative means built-in limit (1GB)
Definition at line 290 of file log.c.
References l_max_size, and yaz_log_init_max_size().
Referenced by check_options(), and yaz_log_init_max_size().
| void yaz_log_init_prefix | ( | const char * | prefix | ) |
sets log message prefix
| prefix | log message prefix |
Definition at line 263 of file log.c.
References yaz_log_info, yaz_log_init_prefix(), and yaz_snprintf().
Referenced by listener(), yaz_log_init(), and yaz_log_init_prefix().
| void yaz_log_init_prefix2 | ( | const char * | prefix | ) |
sets second log message prefix
| prefix | log message prefix |
Definition at line 272 of file log.c.
References yaz_log_info, yaz_log_init_prefix2(), and yaz_snprintf().
Referenced by yaz_log_init_prefix2().
| void yaz_log_lock | ( | void | ) |
Lock for YAZ log writes.
Definition at line 114 of file log.c.
References log_mutex, yaz_log_lock(), and yaz_mutex_enter().
Referenced by yaz_log_do_reopen(), yaz_log_init_globals(), yaz_log_lock(), and yaz_log_to_file().
| int yaz_log_mask_str | ( | const char * | str | ) |
converts log level string to log level (integer)
| str | log level string |
yaz_log_mask_str() converts a comma-separated list of log levels to a bit mask. Starts from default level, and adds bits as specified, unless 'none' is specified, which clears the list. If a name matches the name of a YLOG_BIT above, that one is set. Otherwise a new value is picked, and given to that name, to be found with yaz_log_module_level()
Definition at line 606 of file log.c.
References l_level, yaz_init_globals(), yaz_log_mask_str(), and yaz_log_mask_str_x().
Referenced by check_options(), and yaz_log_mask_str().
| int yaz_log_mask_str_x | ( | const char * | str, |
| int | level ) |
converts log level string to log level with "start" level
| str | log level string |
| level | initialing log level |
yaz_log_mask_str_x() is like yaz_log_mask_str(), but with a given start value.
Definition at line 614 of file log.c.
References clean_name(), define_module_bit(), yaz_isdigit, and yaz_log_mask_str_x().
Referenced by yaz_log_init_globals(), yaz_log_mask_str(), and yaz_log_mask_str_x().
| int yaz_log_module_level | ( | const char * | name | ) |
returns level for module
| name | module name |
yaz_log_module_level() returns a log level mask corresponding to the module name. If that had been specified on the -v arguments (that is passed to yaz_log_mask_str()), then a non-zero mask is returned. If not, we get a zero. This can later be used in yaz_log for the level argument
Definition at line 586 of file log.c.
References clean_name(), mask_names, yaz_init_globals(), yaz_log(), yaz_log_module_level(), and YLOG_LOGLVL.
Referenced by bend_init(), get_logbits(), get_logbits(), initlog(), iochan_create(), nmem_create(), odr_createmem(), odr_reset(), tcpip_init(), unix_init(), xcalloc_f(), xmalloc_f(), xmalloc_trav_f(), xrealloc_f(), xstrdup_f(), and yaz_log_module_level().
|
static |
Definition at line 396 of file log.c.
References yaz_log_do_reopen(), and yaz_log_open().
Referenced by yaz_log_init_file(), yaz_log_init_level(), and yaz_log_open().
|
static |
Definition at line 316 of file log.c.
References l_max_size, rotate_log(), use_file, yaz_log_close(), yaz_log_info, yaz_log_open_check(), and yaz_log_reopen_flag.
Referenced by yaz_log_do_reopen(), yaz_log_open_check(), and yaz_log_to_file().
| void yaz_log_reopen | ( | void | ) |
reopen current log file (unless disabled or stderr)
Definition at line 391 of file log.c.
References yaz_log_reopen(), and yaz_log_reopen_flag.
Referenced by yaz_log_reopen().
| void yaz_log_set_handler | ( | void(* | func )(int, const char *, void *), |
| void * | info ) |
sets custom log handler
| func | custom log handler |
| info | custom pointer to be passed to func handler |
Allows log output to be captured to something else.. The func parameter takes a log level, a message + custom pointer
Definition at line 298 of file log.c.
References hook_func, hook_info, and yaz_log_set_handler().
Referenced by yaz_log_set_handler().
| void yaz_log_time_format | ( | const char * | fmt | ) |
sets time format for log mesages
| fmt | format (strftime) |
Sets the format of the timestamp. See man 3 strftime. Calling with "old" sets to the old format "11:55:06-02/11" Calling with NULL or "" sets to the new format "20041102-115719" If not called at all, the old format is used, for backward compatibility
Definition at line 529 of file log.c.
References l_actual_format, l_custom_format, l_new_default_format, l_old_default_format, TIMEFORMAT_LEN, and yaz_log_time_format().
Referenced by check_options(), and yaz_log_time_format().
|
static |
Definition at line 412 of file log.c.
References l_actual_format, l_level, mask_names, TID_LEN, TIMEFORMAT_LEN, yaz_log_file(), yaz_log_info, yaz_log_lock(), yaz_log_open_check(), yaz_log_to_file(), yaz_log_unlock(), yaz_strftime(), yaz_thread_id_cstr(), YLOG_ALL, YLOG_FLUSH, YLOG_NOTIME, and YLOG_TID.
Referenced by yaz_log(), and yaz_log_to_file().
| void yaz_log_trunc | ( | void | ) |
Truncate the log file.
Definition at line 401 of file log.c.
References yaz_log_do_reopen(), and yaz_log_trunc().
Referenced by yaz_check_init_log(), and yaz_log_trunc().
| void yaz_log_unlock | ( | void | ) |
Unlock for YAZ log writes.
Definition at line 119 of file log.c.
References log_mutex, yaz_log_unlock(), and yaz_mutex_leave().
Referenced by yaz_log_do_reopen(), yaz_log_init_globals(), yaz_log_to_file(), and yaz_log_unlock().
|
static |
Definition at line 406 of file log.c.
References yaz_strftime().
Referenced by yaz_log_to_file(), and yaz_strftime().
|
static |
Definition at line 59 of file log.c.
Referenced by log_event_end(), and yaz_log().
|
static |
Definition at line 60 of file log.c.
Referenced by log_event_end(), and yaz_log().
|
static |
Definition at line 62 of file log.c.
Referenced by yaz_log(), and yaz_log_set_handler().
|
static |
Definition at line 63 of file log.c.
Referenced by yaz_log(), and yaz_log_set_handler().
|
static |
Definition at line 70 of file log.c.
Referenced by yaz_log_time_format(), and yaz_log_to_file().
|
static |
Definition at line 69 of file log.c.
Referenced by yaz_log_time_format().
|
static |
Definition at line 42 of file log.c.
Referenced by yaz_log(), yaz_log_init_globals(), yaz_log_init_level(), yaz_log_mask_str(), and yaz_log_to_file().
|
static |
l_max_size tells when to rotate the log. The default value is 0 which means DISABLED. This is to be preffered if YAZ runs as a server using logrotate etc. A positive size specifies the file size in bytes when a log rotate will occur. Note that in order for this to work YAZ must have permissions to do so.
Definition at line 79 of file log.c.
Referenced by yaz_log_init_max_size(), and yaz_log_open_check().
|
static |
Definition at line 66 of file log.c.
Referenced by yaz_log_time_format().
|
static |
Definition at line 65 of file log.c.
Referenced by yaz_log_time_format().
|
static |
Definition at line 110 of file log.c.
Referenced by yaz_log_deinit_globals(), yaz_log_init_globals(), yaz_log_lock(), and yaz_log_unlock().
| struct [struct].mask_names mask_names[MAX_MASK_NAMES] |
Referenced by define_module_bit(), yaz_log_init_level(), yaz_log_module_level(), and yaz_log_to_file().
|
static |
Definition at line 106 of file log.c.
Referenced by define_module_bit().
|
static |
Definition at line 56 of file log.c.
Referenced by log_event_start(), and yaz_log().
|
static |
Definition at line 57 of file log.c.
Referenced by log_event_start(), and yaz_log().
| struct [struct].yaz_log_info yaz_log_info |
Referenced by yaz_log_close(), yaz_log_file(), yaz_log_init_file(), yaz_log_init_prefix(), yaz_log_init_prefix2(), yaz_log_open_check(), and yaz_log_to_file().
|
static |
Definition at line 108 of file log.c.
Referenced by yaz_log_open_check(), and yaz_log_reopen().