Macros | Functions | Variables
log.c File Reference

Implementation of log.h. More...

#include "config.h"
#include "util/log.h"
#include "util/locks.h"
#include "ldns/sbuffer.h"
#include <stdarg.h>


#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


void log_init (const char *filename, int use_syslog, const char *chrootdir)
 call this to initialize logging services. More...
void log_file (FILE *f)
 Set logging to go to the specified file *. More...
void log_thread_set (int *num)
 Init a thread (will print this number for the thread log entries). More...
void log_ident_set (const char *id)
 Set identity to print, default is 'unbound'. More...
void log_set_time (time_t *t)
 Set the time value to print in log entries. More...
void log_set_time_asc (int use_asc)
 Set if the time value is printed ascii or decimal in log entries. More...
void log_vmsg (int pri, const char *type, const char *format, va_list args)
 va_list argument version of log_info. More...
void log_info (const char *format,...)
 implementation of log_info More...
void log_err (const char *format,...)
 implementation of log_err More...
void log_warn (const char *format,...)
 implementation of log_warn More...
void fatal_exit (const char *format,...)
 implementation of fatal_exit More...
void verbose (enum verbosity_value level, const char *format,...)
 implementation of verbose More...
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. More...
void log_buf (enum verbosity_value level, const char *msg, sldns_buffer *buf)
 Easy alternative for log_hex, takes a sldns_buffer. More...


enum verbosity_value verbosity = 0
 The global verbosity setting.
static FILE * logfile = 0
 the file logged to. More...
static int key_created = 0
 if key has been created
static ub_thread_key_t logkey
 pthread key for thread ids in logfile
static const char * ident ="unbound"
 the identity of this executable/process
static time_t * log_now = NULL
 time to print in log, if NULL, use time(2)
static int log_time_asc = 0
 print time in UTC or in secondsfrom1970

Detailed Description

Implementation of log.h.

Function Documentation

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(), logfile, logkey, VERB_QUERY, and verbose().

Referenced by context_finalize(), do_log_reopen(), 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 logfile.

Referenced by context_finalize(), and ub_ctx_debugout().

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(), ext_thread(), libworker_dobg(), test_thr_main(), thread_start(), and win_do_cron().

void log_ident_set ( const char *  id)

Set identity to print, default is 'unbound'.

id,:string to print. Name of executable.

References ub_packed_rrset_key::id, and ident.

Referenced by main(), and ub_ctx_create_nopipe().

void log_set_time ( time_t *  t)

Set the time value to print in log entries.

t,:the point is copied and used to find the time. if NULL, time(2) is used.

References log_now.

Referenced by worker_delete(), and worker_init().

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_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_now, log_time_asc, 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,
void log_err ( const char *  format,

implementation of log_err

format,:format string printf-style.

References log_vmsg().

Referenced by accept_open(), acl_list_str_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(), autotrust_check(), autr_process_prime(), autr_read_file(), autr_tp_create(), autr_write_file(), call_root_update(), cfg_mark_ports(), cfg_parse_local_zone(), cfg_parse_memsize(), cfg_ptr_reverse(), check_contains_revoked(), check_order_lock(), check_zone_invariants(), checkrlimits(), comm_base_delete(), comm_base_delete_no_base(), comm_base_exit(), comm_base_now(), comm_point_close(), 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_create_udp_ancil(), 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_tcp_handle_write(), comm_point_udp_ancil_callback(), comm_point_udp_callback(), comm_signal_bind(), comm_signal_create(), comm_timer_create(), comm_timer_set(), config_read(), connect_sslctx_create(), contact_server(), 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(), dns_alloc_msg(), dns_cache_find_delegation(), dns_cache_store_msg(), dnskey_verify_rrset_sig(), do_macro_arith(), do_macro_ctime(), do_macro_range(), do_macro_variable(), do_moment_and_advance(), do_proxy(), donotq_str_cfg(), errinf(), errinf_to_str(), error_supers(), fd_set_block(), fd_set_nonblock(), fill_nsec3_iter(), find_add_tp(), find_covering_nsec3(), find_matching_nsec3(), forwards_insert_data(), generate_ns_check(), generate_request(), generate_sub_request(), get_rr_content(), get_rr_nameclass(), handle_newq(), hdlr(), hints_insert(), infra_set_lame(), insert_rr(), 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(), load_trustanchor(), local_zones_add_zone(), log_crypto_err(), log_init(), lz_enter_defaults(), lz_enter_rr_into_zone(), lz_enter_rr_str(), lz_enter_zone(), lz_enter_zone_dname(), lz_exists(), lz_find_create_node(), lz_setup_implicit(), make_scenario(), make_sock(), make_sock_port(), make_stub_holes(), mesh_attach_sub(), mesh_continue(), mesh_create(), mesh_new_client(), mesh_new_prefetch(), mesh_state_attachment(), modstack_config(), modstack_setup(), neg_insert_data(), netblockstrtoaddr(), new_local_rrset(), next_state(), nsec3_calc_b32(), nsec3_calc_hash(), nsec3_ce_wildcard(), nsec3_get_hashed(), outnet_tcp_take_into_use(), outside_network_create(), parse_comments(), parse_dname(), parse_var_line(), perform_setup(), perfreply(), perfselect(), perfsend(), pick_outgoing_tcp(), prealloc(), prealloc_blocks(), prime_root(), prime_stub(), prime_supers(), prime_trust_anchor(), primeResponseToKE(), print_hist(), print_id(), probe_anchor(), process_answer_detail(), process_bind_contents(), process_dlv_response(), process_dnskey_response(), process_ds_response(), process_response(), processClassResponse(), processDLVLookup(), processDSNSResponse(), processFindKey(), processFinished(), processInitRequest(), processInitRequest2(), processLastResort(), processQueryResponse(), 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(), record_sigh(), replay_moment_read(), replay_range_read(), reply_info_answer_encode(), rrset_canonical(), run_scenario(), scrub_normalize(), select_id(), select_ifport(), service(), service_init(), service_main(), service_send(), service_tcp_listen(), serviced_callbacks(), serviced_tcp_callback(), serviced_tcp_initiate(), serviced_udp_callback(), set_recvpktinfo(), signal_handling_record(), skip_to_special(), sock_list_insert(), ssl_handle_read(), ssl_handle_write(), table_grow(), tcp_relay_read(), tcp_relay_write(), tube_create(), tube_queue_item(), tube_read_msg(), tube_setup_bg_listen(), tube_setup_bg_write(), tube_write_msg(), ub_ctx_create_nopipe(), ub_thr_fork_wait(), val_apply_cfg(), val_dlv_init(), val_inform_super(), val_init(), val_neg_addreferral(), val_neg_addreply(), val_neg_create(), val_operate(), validate_any_response(), waitforit(), waitforubanchor(), win_do_cron(), worker_create(), worker_init(), worker_send_cmd(), and worker_sighandler().

void log_warn ( const char *  format,
void fatal_exit ( const char *  format,

implementation of fatal_exit

format,:format string printf-style.

References fatal_exit(), LOG_CRIT, and log_vmsg().

Referenced by aclchecks(), add_opts(), answer_callback_from_entry(), answer_check_it(), autotrust_check(), basedir(), check_chroot_string(), check_fwd(), check_hints(), check_mod(), checkconf(), checkformerr(), checkrlimits(), comm_base_dispatch(), comm_base_exit(), comm_point_send_reply(), comm_point_udp_ancil_callback(), contact_server(), daemon_apply_cfg(), daemon_create_workers(), daemon_fork(), daemon_get_shufport(), daemon_init(), daemon_setup_modules(), detach(), dname_to_buf(), do_infra_rtt(), do_macro_range(), do_moment_and_advance(), dstest_entry(), dstest_file(), fake_pending_callback(), fatal_exit(), fetch_fill(), fill_buffer_with_reply(), find_create_proxy(), get_file_size(), go(), hex_to_buf(), insert_lock(), interfacechecks(), libworker_bg(), localzonechecks(), log_pkt(), lz_enter_rr_str(), main(), match_noloc_section(), moment_assign(), morechecks(), newdata(), newkey(), nsec3_hash_test(), pending_udp_query(), perf_encode(), perfendstats(), perform_setup(), perfselect(), perfsetup(), print_option(), 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(), 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_config(), setup_ctx(), setup_playback(), spool_auto_file(), thread_start(), time_passes(), ub_thr_fork_create(), ub_thread_blocksigs(), ub_thread_sig_unblock(), verifytest_file(), wsvc_command_option(), and wsvc_setup_worker().

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.

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 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(), recv_one(), serviced_callbacks(), and test_buffers().

Variable Documentation

FILE* logfile = 0

the file logged to.

Referenced by config_get_option(), log_file(), log_init(), and log_vmsg().