Implementation of log.h. More...
#include "config.h"
#include "util/log.h"
#include "util/locks.h"
#include "sldns/sbuffer.h"
#include <stdarg.h>
#include <sys/time.h>
Macros | |
#define | LOG_CRIT 2 |
define LOG_ constants | |
#define | LOG_ERR 3 |
#define | LOG_WARNING 4 |
#define | LOG_NOTICE 5 |
#define | LOG_INFO 6 |
#define | LOG_DEBUG 7 |
Functions | |
void | log_init (const char *filename, int use_syslog, const char *chrootdir) |
call this to initialize logging services. | |
void | log_file (FILE *f) |
Set logging to go to the specified file *. | |
void | log_thread_set (int *num) |
Init a thread (will print this number for the thread log entries). | |
int | log_thread_get (void) |
Get the thread id from logging system. | |
void | log_ident_set (const char *id) |
Set identity to print, default is 'unbound'. | |
void | log_ident_set_default (const char *id) |
Set default identity to print, default is 'unbound'. | |
void | log_ident_revert_to_default (void) |
Revert identity to print, back to the recorded default value. | |
void | log_ident_set_or_default (const char *identity) |
Set identity to print if there is an identity, otherwise set the default. | |
void | log_set_time_asc (int use_asc) |
Set if the time value is printed ascii or decimal in log entries. | |
void | log_set_time_iso (int use_iso) |
Set if the time value is printed in ISO8601 format. | |
void * | log_get_lock (void) |
get log lock | |
void | log_vmsg (int pri, const char *type, const char *format, va_list args) |
va_list argument version of log_info. | |
void | log_info (const char *format,...) |
implementation of log_info | |
void | log_err (const char *format,...) |
implementation of log_err | |
void | log_warn (const char *format,...) |
implementation of log_warn | |
void | fatal_exit (const char *format,...) |
implementation of fatal_exit | |
void | verbose (enum verbosity_value level, const char *format,...) |
implementation of verbose | |
static void | log_hex_f (enum verbosity_value v, const char *msg, void *data, size_t length) |
log hex data | |
void | log_hex (const char *msg, void *data, size_t length) |
Log a hex-string to the log. | |
void | log_query (const char *format,...) |
void | log_reply (const char *format,...) |
void | log_buf (enum verbosity_value level, const char *msg, sldns_buffer *buf) |
Easy alternative for log_hex, takes a sldns_buffer. | |
Variables | |
enum verbosity_value | verbosity = NO_VERBOSE |
The global verbosity setting. | |
static FILE * | logfile = 0 |
the file logged to. | |
static int | key_created = 0 |
if key has been created | |
static ub_thread_key_type | logkey |
pthread key for thread ids in logfile | |
static lock_basic_type | log_lock |
pthread mutex to protect FILE* | |
static const char * | ident ="unbound" |
the identity of this executable/process | |
static const char * | default_ident ="unbound" |
static int | log_time_asc = 0 |
print time in UTC or in secondsfrom1970 | |
static int | log_time_iso = 0 |
print time in iso format | |
Implementation of log.h.
void log_init | ( | const char * | filename, |
int | use_syslog, | ||
const char * | chrootdir | ||
) |
call this to initialize logging services.
filename | if NULL stderr is used. |
use_syslog | set to true to ignore filename and use syslog(3). |
chrootdir | to which directory we have been chrooted, if any. |
References ident, key_created, log_err(), log_lock, logfile, logkey, VERB_QUERY, and verbose().
Referenced by context_finalize(), do_log_reopen(), main(), main(), main(), perform_setup(), run_daemon(), service_init(), service_start(), and ub_ctx_create_nopipe().
void log_file | ( | FILE * | f | ) |
Set logging to go to the specified file *.
This setting does not affect the use_syslog setting.
f | to that file, or pass NULL to disable logging. |
References log_lock, and logfile.
Referenced by context_finalize(), ub_ctx_debugout(), and ub_ctx_delete().
void log_thread_set | ( | int * | num | ) |
Init a thread (will print this number for the thread log entries).
Must be called from the thread itself. If not called 0 is printed.
num | number to print for this thread. Owned by caller, must continue to exist. |
References logkey.
Referenced by daemon_cleanup(), dnstap_io(), ext_thread(), libworker_dobg(), test_thr_main(), test_thr_main(), thread_start(), and win_do_cron().
int log_thread_get | ( | void | ) |
Get the thread id from logging system.
Set after log_init is initialised, or log_thread_set for newly created threads. This initialisation happens in unbound as a daemon, in daemon startup code, when that spawns threads.
References key_created, and logkey.
void log_ident_set | ( | const char * | id | ) |
Set identity to print, default is 'unbound'.
id | string to print. Name of executable. |
References ident.
Referenced by log_ident_set_or_default(), main(), main(), and ub_ctx_create_nopipe().
void log_ident_set_default | ( | const char * | id | ) |
Set default identity to print, default is 'unbound'.
id | string to print. Name of executable. |
Referenced by main().
void log_ident_set_or_default | ( | const char * | identity | ) |
Set identity to print if there is an identity, otherwise set the default.
identity | the identity to set. |
References log_ident_set().
Referenced by apply_settings().
void log_set_time_asc | ( | int | use_asc | ) |
Set if the time value is printed ascii or decimal in log entries.
use_asc | if true, ascii is printed, otherwise decimal. If the conversion fails or you have no time functions, decimal is printed. |
References log_time_asc.
Referenced by config_apply(), and config_set_option().
void log_set_time_iso | ( | int | use_iso | ) |
Set if the time value is printed in ISO8601 format.
use_iso | if true, ascii timestamps are formatted in iso format. |
References log_time_iso.
Referenced by config_apply(), and config_set_option().
void log_vmsg | ( | int | pri, |
const char * | type, | ||
const char * | format, | ||
va_list | args | ||
) |
va_list argument version of log_info.
pri | priority type, for example 5 (INFO). |
type | string to designate type of message (info, error). |
format | the printf style format to print. no newline. |
args | arguments for format string. |
References ident, log_lock, log_time_asc, log_time_iso, logfile, logkey, MSG_GENERIC_ERR, MSG_GENERIC_INFO, MSG_GENERIC_SUCCESS, MSG_GENERIC_WARN, and SERVICE_NAME.
Referenced by fatal_exit(), log_err(), log_info(), log_warn(), and verbose().
void log_info | ( | const char * | format, |
... | |||
) |
implementation of log_info
format | format string printf-style. |
References log_vmsg().
Referenced by alloc_stats(), answer_check_it(), apply_http(), auth_zone_generate_answer(), autotrust_check(), autr_debug_print_ta(), autr_debug_print_tp(), checkfile(), comm_point_drop_reply(), comm_point_send_reply(), comm_point_send_udp_msg(), comm_point_tcp_accept_callback(), comm_timer_disable(), comm_timer_set(), daemon_fork(), delegpt_log(), do_expire_message(), do_flush_message(), do_infra_rtt(), do_moment_and_advance(), dtio_mainfdcallback(), dtio_tap_callback(), expon_timeout_backoff(), fake_front_query(), invalidateQueryInCache(), local_zones_print(), log_dns_msg(), log_nametypeclass(), log_packed_rrset(), log_pkt(), log_query_in(), log_reply_info(), lruhash_status(), macro_print_debug(), main(), mesh_stats(), moment_assign(), outnet_serviced_query_stop(), packed_rr_to_string(), pending_find_match(), pending_tcp_query(), pending_udp_query(), processFinished(), receive_bytes(), regional_log_stats(), replay_scenario_read(), reply_with_accept(), reply_with_finish(), respip_merge_cname(), run_scenario(), server_stats_log(), pymod::setTTL(), pymod_thread::setTTL(), setup_and_run(), setup_playback(), sigdate_error(), slabhash_status(), tempfile_check(), test_buffers(), test_long_table(), testlookup(), testlookup(), testlookup_unlim(), testlookup_unlim(), time_passes(), timehist_log(), verbose_print_unbound_socket(), waitforubanchor(), and worker_mem_report().
void log_err | ( | const char * | format, |
... | |||
) |
implementation of log_err
format | format string printf-style. |
References log_vmsg().
Referenced by accept_open(), acl_find_or_create(), acl_find_or_create_str2addr(), acl_interface_str_cfg(), acl_list_str_cfg(), acl_list_tag_action_cfg(), acl_list_tag_data_cfg(), acl_list_tags_cfg(), acl_list_view_cfg(), add_bg_result(), add_open(), add_trustanchor_frm_str(), ah(), alloc_special_obtain(), anchor_insert_insecure(), anchor_read_bind_file(), anchor_read_bind_file_wild(), anchor_read_file(), anchor_store_new_key(), anchor_store_str(), anchors_add_insecure(), anchors_apply_cfg(), anchors_assemble_rrsets(), answer_chaos(), apply_axfr(), apply_http(), auth_addr_list_copy(), auth_master_copy(), auth_master_new(), auth_xfer_create(), auth_zone_delegpt(), auth_zone_read_zonefile(), auth_zone_set_fallback(), auth_zone_set_zonefile(), auth_zone_verify_zonemd_with_key(), auth_zone_write_chunks(), auth_zone_write_file(), auth_zone_zonemd_fail(), auth_zones_apply_cfg(), auth_zones_cfg(), auth_zones_create(), auth_zones_find_or_add_zone(), auth_zones_pickup_zonemd_verify(), autotrust_check(), autr_process_prime(), autr_read_file(), autr_tp_create(), autr_write_file(), az_insert_rr(), az_insert_rr_decompress(), az_parse_file(), az_remove_rr(), az_remove_rr_decompress(), call_root_update(), caps_white_apply_cfg(), cfg_apply_local_port_policy(), cfg_mark_ports(), cfg_parse_local_zone(), cfg_parse_memsize(), cfg_ptr_reverse(), check_auth_name_for_ssl(), check_contains_revoked(), check_data(), check_order_lock(), check_zone_invariants(), checkconf(), checkconnecterr(), checkrlimits(), comm_base_delete(), comm_base_delete_no_base(), comm_base_exit(), comm_point_close(), comm_point_create_doq(), comm_point_create_http_out(), comm_point_create_local(), comm_point_create_raw(), comm_point_create_tcp(), comm_point_create_tcp_handler(), comm_point_create_tcp_out(), comm_point_create_udp(), comm_point_http_handle_callback(), comm_point_listen_for_rw(), comm_point_local_handle_callback(), comm_point_perform_accept(), comm_point_send_udp_msg(), comm_point_send_udp_msg_if(), comm_point_start_listening(), comm_point_stop_listening(), comm_point_tcp_handle_callback(), comm_point_tcp_handle_read(), comm_point_udp_callback(), comm_signal_bind(), comm_signal_create(), comm_timer_create(), comm_timer_set(), config_parse_taglist(), config_read(), connect_sslctx_create(), consume_pp2_header(), cookie_secret_file_read(), cookie_secrets_apply_cfg(), create_local_accept_sock(), create_tcp_accept_sock(), create_udp_sock(), createResponse(), daemon_delete(), daemon_init(), daemon_remote_create(), daemon_remote_exec(), daemon_remote_open_accept(), dname_pkt_copy(), dns64_apply_cfg(), dns64_inform_super(), dns64_init(), dns64_insert_ignore_aaaa(), dns64_operate(), dns_alloc_msg(), dns_cache_find_delegation(), dns_cache_store_msg(), dnsc_load_local_data(), dnskey_verify_rrset_sig(), dnstap_io(), do_macro_arith(), do_macro_ctime(), do_macro_range(), do_macro_variable(), do_moment_and_advance(), do_proxy(), domain_limit_findcreate(), donotq_str_cfg(), ds_response_to_ke(), dt_io_thread_apply_cfg(), dt_io_thread_start(), dt_io_thread_stop(), dt_msg_queue_submit(), dtio_add_output_event_read(), dtio_add_output_event_write(), dtio_check_nb_connect(), dtio_cmd_cb(), dtio_control_stop_flush(), dtio_open_output(), dtio_open_output_local(), dtio_open_output_tcp(), dtio_read_accept_frame(), dtio_reconnect_enable(), dtio_stop_flush_exit(), dtio_tap_callback(), dtio_wakeup(), dtio_write_buf(), dup_all(), dup_prefix(), dynlibmod_init(), edns_register_option(), edns_strings_apply_cfg(), errinf_to_str_bogus(), errinf_to_str_misc(), errinf_to_str_servfail(), error_supers(), fd_for_dest(), fd_set_block(), fd_set_nonblock(), fill_nsec3_iter(), find_add_tp(), find_covering_nsec3(), find_matching_nsec3(), forwards_insert_data(), generate_keytag_query(), generate_ns_check(), generate_request(), generate_sub_request(), get_rr_nameclass(), handle_event_moddone(), handle_newq(), handle_req(), hdlr(), hints_insert(), http_parse_add_rr(), http_zonefile_syntax_check(), infra_set_lame(), inplace_cb_register(), ipset_init(), ipset_operate(), ipset_startup(), iter_apply_cfg(), iter_dns_store(), iter_init(), iter_lookup_parent_glue_from_cache(), iter_operate(), iter_store_parentside_neg(), iter_store_parentside_rrset(), key_cache_create(), libworker_do_cmd(), libworker_dobg(), libworker_enter_result(), listen_create(), listen_sslctx_create(), listen_sslctx_setup_ticket_keys(), listening_ports_open(), load_trustanchor(), local_zone_enter_defaults(), local_zone_enter_rr(), local_zones_add_zone(), log_crypto_err_code(), log_dns_msg(), log_err_addr(), log_init(), log_py_err(), lz_enter_override(), lz_enter_rr_into_zone(), lz_enter_rr_str(), lz_enter_zone(), lz_enter_zone_dname(), lz_enter_zone_tag(), lz_exists(), lz_find_create_node(), lz_setup_implicit(), make_scenario(), make_sock(), make_sock_port(), make_stub_holes(), make_tcp_accept(), mesh_add_sub(), mesh_continue(), mesh_create(), mesh_new_client(), mesh_query_done(), mesh_serve_expired_callback(), mesh_state_attachment(), modstack_call_init(), modstack_call_startup(), modstack_config(), neg_insert_data(), netblockstrtoaddr(), new_cname_override(), new_local_rrset(), new_rrset(), next_state(), nsec3_calc_b32(), nsec3_calc_hash(), nsec3_ce_wildcard(), nsec3_get_hashed(), nth_rtt(), outnet_comm_point_for_http(), outnet_comm_point_for_tcp(), outnet_comm_point_for_udp(), outnet_tcp_take_into_use(), outside_network_create(), parse_acl_access(), parse_comments(), parse_delegpt(), parse_dname(), parse_edns_options_from_query(), parse_extract_edns_from_response_msg(), parse_url(), parse_var_line(), perform_setup(), perfreply(), perfselect(), perfsend(), pick_outgoing_tcp(), populate_action_info(), ports_create_if(), prealloc_blocks(), prealloc_setup(), prime_root(), prime_stub(), prime_supers(), prime_trust_anchor(), primeResponseToKE(), print_hist(), print_id(), probe_anchor(), process_answer_detail(), process_bind_contents(), process_dnskey_response(), process_ds_response(), process_response(), processClassResponse(), processDSNSResponse(), processFinished(), processFinished(), processInitRequest(), processInitRequest2(), processLastResort(), processQueryResponse(), processQueryTargets(), processTargetResponse(), processValidate(), pythonmod_deinit(), pythonmod_inform_super(), pythonmod_init(), read_addrs(), read_fetch_policy(), read_fwds_addr(), read_fwds_host(), read_fwds_name(), read_multiline(), read_names(), read_root_hints(), read_stubs_addr(), read_stubs_host(), read_stubs_name(), receive_bytes(), receive_bytes(), remote_handshake_later(), replay_moment_read(), replay_range_read(), replay_scenario_read(), reply_info_answer_encode(), reply_with_accept(), reply_with_finish(), resolve_interface_names(), respip_action_cfg(), respip_enter_rr(), respip_find_or_create(), respip_operate(), respip_rewrite_reply(), respip_sockaddr_find_or_create(), respip_views_apply_cfg(), reuse_tcp_insert(), reuse_tcp_lru_touch(), reuse_tcp_remove_tree_list(), rpz_apply_cfg_elements(), rpz_insert_rr(), rpz_synthesize_cname_override_msg(), rrset_add_rr(), rrset_cache_update_wildcard(), rrset_canonical(), rrset_canonicalize_to_buffer(), rrset_create(), rrset_insert_rr(), rrset_moveover_rrsigs(), rrset_remove_rr(), rrstr_get_rr_content(), run_scenario(), scrub_normalize(), select_id(), select_ifport(), service(), service_init(), service_main(), service_send(), service_tcp_listen(), serviced_callbacks(), serviced_tcp_callback(), serviced_udp_callback(), set_auth_name_on_ssl(), set_recvpktinfo(), set_recvtimestamp(), pymod::setTTL(), pymod_thread::setTTL(), setup_comm_ssl(), signal_handling_record(), skip_to_special(), sock_list_insert(), ssl_handle_read(), ssl_handle_write(), ssl_http_read_more(), ssl_http_write_more(), table_grow(), tap_socket_list_addevs(), tap_socket_new_local(), tap_socket_new_tcpaccept(), tap_socket_new_tlsaccept(), tap_socket_setup(), tcl_list_str_cfg(), tcp_relay_read(), tcp_relay_write(), tcp_req_info_add_result(), tcp_req_info_create(), tempfile_check(), tube_create(), tube_queue_item(), tube_read_msg(), tube_setup_bg_listen(), tube_setup_bg_write(), tube_write_msg(), ub_comm_base_now(), ub_ctx_create_nopipe(), ub_stop_bg(), ub_thr_fork_wait(), val_apply_cfg(), val_inform_super(), val_init(), val_neg_addreferral(), val_neg_addreply(), val_neg_create(), val_operate(), validate_any_response(), validate_suspend_setup_timer(), views_apply_cfg(), views_enter_view_name(), wait_limit_netblock_findcreate(), waitforit(), waitforubanchor(), win_do_cron(), worker_create(), worker_handle_request(), worker_init(), worker_send_cmd(), write_out(), xfer_set_masters(), xfr_master_add_addrs(), xfr_probe_lookup_host(), xfr_probe_send_probe(), xfr_set_timeout(), xfr_transfer_init_fetch(), xfr_transfer_lookup_host(), xfr_write_after_update(), zonemd_lookup_dnskey(), and zonemd_offline_verify().
void log_warn | ( | const char * | format, |
... | |||
) |
implementation of log_warn
format | format string printf-style. |
References log_vmsg().
Referenced by alloc_get_id(), anchors_assemble_rrsets(), apply_settings(), auth_zone_create(), auth_zone_zonemd_fail(), auth_zones_apply_cfg(), autr_read_file(), az_domain_create(), cfg_mark_ports(), check_holddown(), checkrlimits(), comm_point_tcp_accept_callback(), create_tcp_accept_sock(), create_udp_sock(), daemon_apply_cfg(), daemon_create_workers(), daemon_fork(), daemon_remote_create(), delegpt_add_rrset(), ds_response_to_ke(), dt_io_thread_apply_cfg(), go(), handle_origin(), iter_handle(), listen_create(), load_msg(), load_qinfo(), load_ref(), load_rr(), load_rrset(), local_rrset_remove_rr(), lz_enter_zone_dname(), main(), move_into_cache(), outnet_udp_cb(), perform_setup(), ports_create_if(), processQueryResponse(), read_root_hints(), respip_sockaddr_find_or_create(), ring_add(), rrset_array_unlock_touch(), rrset_insert_rr(), run_daemon(), service_init(), ub_thr_fork_wait(), val_handle(), val_init(), and views_enter_view_name().
void fatal_exit | ( | const char * | format, |
... | |||
) |
implementation of fatal_exit
format | format string printf-style. |
References LOG_CRIT, and log_vmsg().
Referenced by acl_view_tag_checks(), aclchecks(), add_opts(), answer_callback_from_entry(), answer_check_it(), auth_zones_cfg(), authtest_addzone(), autotrust_check(), autr_write_file(), basedir(), check_args_for_listcmd(), check_auth(), check_chroot_string(), check_fwd(), check_hints(), check_mod(), check_modules_exist(), check_queries(), check_read_exact(), checkconf(), checkfile(), checkformerr(), checkrlimits(), comm_base_dispatch(), comm_base_exit(), comm_point_send_reply(), comm_timer_create(), contact_server(), create_tmp_file(), daemon_apply_cfg(), daemon_create_workers(), daemon_fork(), daemon_get_shufport(), daemon_init(), daemon_privileged(), daemon_setup_modules(), detach(), dname_to_buf(), dnsc_parse_certs(), dnsc_parse_keys(), do_expire_message(), do_flush_message(), do_infra_rtt(), do_macro_range(), do_moment_and_advance(), dstest_entry(), dstest_file(), dtio_mainfdcallback(), dtio_setup_base(), dtio_setup_cmd(), dtio_setup_reconnect(), fake_front_query(), fake_pending_callback(), fetch_fill(), fill_buffer_with_reply(), find_create_proxy(), get_file_size(), go(), hex_to_buf(), ifautomaticportschecks(), init_cookie_secret(), insert_lock(), interfacechecks(), libworker_bg(), line_diff(), localzonechecks(), log_pkt(), lz_enter_rr_str(), main(), main(), main(), match_noloc_section(), modstack_call_startup(), moment_assign(), morechecks(), msgtostr(), newdata(), newdata(), newkey(), newkey(), nsec3_hash_test(), pending_tcp_query(), pending_udp_query(), perf_encode(), perfendstats(), perform_setup(), perfselect(), perfsetup(), ports_create_if(), pr_rrs(), print_option(), print_stats_shm(), q_ans_parse(), qlist_add_line(), qlist_grow_capacity(), read_assign_step(), read_calloc_stat(), read_create(), read_file_content(), read_header(), read_lock(), read_malloc_stat(), readfile(), readkeyword_bindfile(), readup_str(), recv_one(), remote_read(), remote_write(), replay_moment_read(), replay_range_read(), replay_scenario_read(), ring_create(), rr_test_file(), run_daemon(), run_scenario(), search_cycle(), send_em(), server_stats_obtain(), server_stats_reply(), service(), service_init(), service_loop(), service_recv(), service_send(), service_start(), service_tcp_listen(), setup_and_run(), setup_config(), setup_ctx(), setup_local_list(), setup_playback(), setup_tcp_list(), setup_tls_list(), spool_auto_file(), spool_temp_file(), spool_temp_file_name(), tcp_reuse_tree_list_test(), tcpconnlimitchecks(), tempfile_check(), thread_start(), time_passes(), ub_thr_fork_create(), ub_thread_blocksigs(), ub_thread_sig_unblock(), verifytest_file(), view_and_respipchecks(), worker_init(), wsvc_command_option(), wsvc_setup_worker(), and zonemd_verify_test().
void verbose | ( | enum verbosity_value | level, |
const char * | format, | ||
... | |||
) |
implementation of verbose
level | verbose level for the message. |
format | format string printf-style. |
References log_vmsg(), VERB_DETAIL, VERB_OPS, and verbosity.
Referenced by log_hex_f(), and log_init().
void log_hex | ( | const char * | msg, |
void * | data, | ||
size_t | length | ||
) |
Log a hex-string to the log.
Can be any length. performs mallocs to do so, slow. But debug useful.
msg | string desc to accompany the hexdump. |
data | data to dump in hex format. |
length | length of data. |
References log_hex_f(), and verbosity.
Referenced by auth_zone_generate_zonemd_check(), and test_buffers().
void log_buf | ( | enum verbosity_value | level, |
const char * | msg, | ||
struct sldns_buffer * | buf | ||
) |
Easy alternative for log_hex, takes a sldns_buffer.
level | verbosity level for this message, compared to global verbosity setting. |
msg | string desc to print |
buf | the buffer. |
References log_hex_f(), sldns_buffer_begin(), sldns_buffer_limit(), and verbosity.
Referenced by outnet_udp_cb(), serviced_callbacks(), and test_buffers().