#include <signal.h>
#include <stdarg.h>
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/stat.h>
#include <syslog.h>
#include "asterisk.h"
#include "asterisk/logger.h"
#include "asterisk/lock.h"
#include "asterisk/options.h"
#include "asterisk/channel.h"
#include "asterisk/config.h"
#include "asterisk/term.h"
#include "asterisk/cli.h"
#include "asterisk/utils.h"
#include "asterisk/manager.h"
Go to the source code of this file.
Data Structures | |
struct | logchannel |
struct | msglist |
struct | verb |
Defines | |
#define | FORMATL "%-35.35s %-8.8s %-9.9s " |
#define | GETTID() getpid() |
#define | MAX_MSG_QUEUE 200 |
#define | SYSLOG_NAMES |
#define | SYSLOG_NLEVELS sizeof(syslog_level_map) / sizeof(int) |
Enumerations | |
enum | logtypes { LOGTYPE_SYSLOG, LOGTYPE_FILE, LOGTYPE_CONSOLE } |
Functions | |
void | ast_log (int level, const char *file, int line, const char *function, const char *fmt,...) |
static void | ast_log_vsyslog (int level, const char *file, int line, const char *function, const char *fmt, va_list args) |
AST_MUTEX_DEFINE_STATIC (loglock) | |
AST_MUTEX_DEFINE_STATIC (msglist_lock) | |
void | ast_queue_log (const char *queuename, const char *callid, const char *agent, const char *event, const char *fmt,...) |
int | ast_register_verbose (void(*v)(const char *string, int opos, int replacelast, int complete)) |
int | ast_unregister_verbose (void(*v)(const char *string, int opos, int replacelast, int complete)) |
void | ast_verbose (const char *fmt,...) |
int | ast_verbose_dmesg (void(*v)(const char *string, int opos, int replacelast, int complete)) |
void | close_logger (void) |
static int | handle_logger_reload (int fd, int argc, char *argv[]) |
static int | handle_logger_rotate (int fd, int argc, char *argv[]) |
static int | handle_logger_show_channels (int fd, int argc, char *argv[]) |
static int | handle_SIGXFSZ (int sig) |
int | init_logger (void) |
static void | init_logger_chain (void) |
static int | make_components (char *s, int lineno) |
static struct logchannel * | make_logchannel (char *channel, char *components, int lineno) |
int | reload_logger (int rotate) |
Variables | |
static int | colors [] |
static char | dateformat [256] = "%b %e %T" |
static FILE * | eventlog = NULL |
static int | filesize_reload_needed = 0 |
static int | global_logmask = -1 |
static char | hostname [MAXHOSTNAMELEN] |
static struct msglist * | last |
static char * | levels [] |
static struct msglist * | list |
static struct logchannel * | logchannels = NULL |
struct { | |
unsigned int event_log:1 | |
unsigned int queue_log:1 | |
} | logfiles |
static char | logger_reload_help [] |
static char | logger_rotate_help [] |
static struct ast_cli_entry | logger_show_channels_cli |
static char | logger_show_channels_help [] |
static int | msgcnt = 0 |
static FILE * | qlog = NULL |
static struct ast_cli_entry | reload_logger_cli |
static struct ast_cli_entry | rotate_logger_cli |
static int | syslog_level_map [] |
static struct verb * | verboser |
Logging routines
Definition in file logger.c.
#define FORMATL "%-35.35s %-8.8s %-9.9s " |
Referenced by handle_logger_show_channels().
#define GETTID | ( | ) | getpid() |
#define MAX_MSG_QUEUE 200 |
#define SYSLOG_NLEVELS sizeof(syslog_level_map) / sizeof(int) |
enum logtypes |
Definition at line 98 of file logger.c.
00098 { 00099 LOGTYPE_SYSLOG, 00100 LOGTYPE_FILE, 00101 LOGTYPE_CONSOLE, 00102 };
void ast_log | ( | int | level, | |
const char * | file, | |||
int | line, | |||
const char * | function, | |||
const char * | fmt, | |||
... | ||||
) |
Definition at line 693 of file logger.c.
References __LOG_DEBUG, __LOG_EVENT, __LOG_VERBOSE, ast_console_puts(), ast_log_vsyslog(), ast_mutex_lock(), ast_mutex_unlock(), ast_strlen_zero(), ast_verbose(), COLOR_BRWHITE, colors, dateformat, debug_filename, logchannel::disabled, EVENT_FLAG_SYSTEM, eventlog, logchannel::filename, logchannel::fileptr, filesize_reload_needed, GETTID, global_logmask, levels, LOG_EVENT, logchannels, logfiles, logchannel::logmask, LOGTYPE_CONSOLE, LOGTYPE_SYSLOG, manager_event(), logchannel::next, option_debug, option_timestamp, option_verbose, reload_logger(), t, term_color(), term_strip(), and logchannel::type.
Referenced by __adsi_transmit_messages(), __agent_start_monitoring(), __ast_check_signature(), __ast_check_signature_bin(), __ast_context_destroy(), __ast_decrypt_bin(), __ast_dsp_call_progress(), __ast_encrypt_bin(), __ast_pbx_run(), __ast_request_and_dial(), __ast_sign_bin(), __ast_smoother_feed(), __build_step(), __grab_token(), __load_resource(), __login_exec(), __mgcp_xmit(), __oh323_destroy(), __oh323_new(), __oh323_update_info(), __sip_ack(), __sip_autodestruct(), __sip_destroy(), __sip_pretend_ack(), __sip_reliable_xmit(), __sip_semi_ack(), __sip_xmit(), __transmit_response(), __unload_module(), __zt_exception(), _while_exec(), accept_thread(), acf_curl_exec(), acf_cut_exec(), acf_sort_exec(), acf_strftime(), acf_vmcount_exec(), ack_trans(), add_agent(), add_blank_header(), add_header(), add_identifier(), add_line(), add_realm_authentication(), add_sdp(), add_sip_domain(), add_to_interfaces(), admin_exec(), adpcmtolin_framein(), adsi_begin(), adsi_begin_download(), adsi_careful_send(), adsi_get_cpeid(), adsi_get_cpeinfo(), adsi_load_session(), adsi_load_vmail(), adsi_process(), adsi_prog(), adsi_transmit_message_full(), advanced_options(), agent_answer(), agent_bridgedchannel(), agent_call(), agent_cont_sleep(), agent_fixup(), agent_hangup(), agent_new(), agent_read(), agent_request(), agent_write(), agentmonitoroutgoing_exec(), agi_debug_cli(), agi_exec(), agi_exec_full(), agi_register(), alarmreceiver_exec(), alawtolin_framein(), alawtoulaw_framein(), alloc_sub(), alsa_card_init(), alsa_indicate(), alsa_new(), alsa_read(), alsa_request(), alsa_write(), answer_call(), anti_injection(), aopen_answer(), aopen_break(), aopen_dial(), aopen_dialdigit(), aopen_handle_escape(), aopen_hangup(), aopen_init(), aopen_read(), aopen_setdev(), aopen_startrec(), aopen_write(), aPGSQL_clear(), aPGSQL_connect(), aPGSQL_debug(), aPGSQL_disconnect(), aPGSQL_fetch(), aPGSQL_query(), aPGSQL_reset(), app_exec(), append_history(), append_transaction(), apply_option(), apply_outgoing(), aqm_exec(), ast_add_extension2(), ast_add_hint(), ast_ael_compile(), ast_app_dtget(), ast_app_getvoice(), ast_app_parse_options(), ast_append_ha(), ast_apply_ha(), ast_async_goto(), ast_autoservice_start(), ast_best_codec(), ast_bridge_call(), ast_cdr_answer(), ast_cdr_busy(), ast_cdr_detach(), ast_cdr_disposition(), ast_cdr_dup(), ast_cdr_end(), ast_cdr_engine_init(), ast_cdr_failed(), ast_cdr_free(), ast_cdr_init(), ast_cdr_register(), ast_cdr_serialize_variables(), ast_cdr_setapp(), ast_cdr_setdestchan(), ast_cdr_setvar(), ast_cdr_start(), ast_cdr_submit_batch(), ast_channel_alloc(), ast_channel_bridge(), ast_channel_free(), ast_channel_inherit_variables(), ast_channel_make_compatible(), ast_channel_masquerade(), ast_channel_register(), ast_channel_setoption(), ast_channel_spy_add(), ast_channel_start_silence_generator(), ast_channel_stop_silence_generator(), ast_channel_unregister(), ast_check_timing(), ast_cli(), ast_cli_command(), ast_cli_register(), ast_cli_unregister(), ast_codec_get_len(), ast_codec_get_samples(), ast_config_engine_register(), ast_config_internal_load(), ast_context_add_ignorepat2(), ast_context_add_include2(), ast_context_add_switch2(), ast_context_create(), ast_context_verify_includes(), ast_control_streamfile(), ast_custom_function_find(), ast_custom_function_register(), ast_custom_function_unregister(), ast_db_del(), ast_db_get(), ast_db_gettree(), ast_db_put(), ast_device_state_engine_init(), ast_do_masquerade(), ast_dsp_busydetect(), ast_dsp_call_progress(), ast_dsp_digitdetect(), ast_dsp_process(), ast_dsp_set_busy_pattern(), ast_dsp_silence(), ast_dtmf_stream(), ast_el_read_char(), ast_feature_interpret(), ast_feature_request_and_dial(), ast_filehelper(), ast_find_ourip(), ast_format_register(), ast_format_unregister(), ast_frisolate(), ast_func_read(), ast_func_write(), ast_get_channel_tech(), ast_get_enum(), ast_get_group(), ast_get_indication_tone(), ast_get_indication_zone(), ast_get_ip_or_srv(), ast_get_txt(), ast_hangup(), ast_hint_extension(), ast_iax2_new(), ast_indicate(), ast_io_add(), ast_io_dump(), ast_io_remove(), ast_io_wait(), ast_ivr_menu_run_internal(), ast_linear_stream(), ast_loader_register(), ast_loader_unregister(), ast_lock_path(), ast_lookup_iface(), ast_makesocket(), ast_manager_register2(), ast_manager_register_struct(), ast_masq_park_call(), ast_merge_contexts_and_delete(), ast_modem_new(), ast_moh_destroy(), ast_monitor_change_fname(), ast_monitor_start(), ast_monitor_stop(), ast_netsock_bind(), ast_netsock_bindaddr(), ast_openstream_full(), ast_openvstream(), ast_osp_lookup(), ast_osp_next(), ast_osp_terminate(), ast_osp_validate(), ast_ouraddrfor(), ast_park_call(), ast_park_metermaid_add(), ast_parse_allow_disallow(), ast_parseable_goto(), ast_pbx_outgoing_app(), ast_pbx_outgoing_cdr_failed(), ast_pbx_outgoing_exten(), ast_pbx_run_app(), ast_pbx_start(), ast_pickup_call(), ast_play_and_prepend(), ast_play_and_record_full(), ast_playtones_start(), ast_prod(), ast_pthread_create_stack(), ast_queue_frame(), ast_read(), ast_read_image(), ast_read_textfile(), ast_readaudio_callback(), ast_readconfig(), ast_readfile(), ast_readvideo_callback(), ast_record_review(), ast_register_application(), ast_register_feature(), ast_register_indication(), ast_register_indication_country(), ast_register_switch(), ast_register_translator(), ast_remotecontrol(), ast_request(), ast_resource_exists(), ast_rtcp_new(), ast_rtcp_read(), ast_rtp_bridge(), ast_rtp_new_with_bindaddr(), ast_rtp_offered_from_local(), ast_rtp_proto_register(), ast_rtp_raw_write(), ast_rtp_read(), ast_rtp_reload(), ast_rtp_sendcng(), ast_rtp_senddigit(), ast_rtp_settos(), ast_rtp_write(), ast_safe_system(), ast_say_date_with_format_da(), ast_say_date_with_format_de(), ast_say_date_with_format_en(), ast_say_date_with_format_es(), ast_say_date_with_format_fr(), ast_say_date_with_format_gr(), ast_say_date_with_format_he(), ast_say_date_with_format_it(), ast_say_date_with_format_nl(), ast_say_date_with_format_pt(), ast_say_date_with_format_tw(), ast_say_enumeration_full_da(), ast_say_enumeration_full_de(), ast_say_enumeration_full_en(), ast_say_number_full_da(), ast_say_number_full_de(), ast_say_number_full_en(), ast_say_number_full_en_GB(), ast_say_number_full_es(), ast_say_number_full_fr(), ast_say_number_full_gr(), ast_say_number_full_he(), ast_say_number_full_it(), ast_say_number_full_nl(), ast_say_number_full_no(), ast_say_number_full_ru(), ast_say_number_full_se(), ast_say_number_full_tw(), ast_sched_add_variable(), ast_sched_del(), ast_sched_dump(), ast_sched_runq(), ast_sched_wait(), ast_sched_when(), ast_search_dns(), ast_set_priority(), ast_settimeout(), ast_sip_ouraddrfor(), ast_slinfactory_feed(), ast_smoother_read(), ast_softhangup_nolock(), ast_stopstream(), ast_streamfile(), ast_translate(), ast_translator_build_path(), ast_tryconnect(), ast_unload_resource(), ast_unlock_path(), ast_unregister_application(), ast_unregister_indication(), ast_unregister_indication_country(), ast_unregister_switch(), ast_update_use_count(), ast_var_assign(), ast_verbose(), ast_waitfor_n_fd(), ast_waitfor_nandfds(), ast_waitfordigit_full(), ast_waitstream(), ast_waitstream_exten(), ast_waitstream_fr(), ast_waitstream_full(), ast_write(), ast_writefile(), ast_writestream(), ast_yyerror(), async_wait(), attempt_reconnect(), attempt_thread(), attempt_transfer(), attempt_transmit(), au_close(), au_open(), au_read(), au_rewrite(), au_write(), auth_exec(), authenticate(), authenticate_verify(), auto_congest(), autoservice_run(), available(), background_detect_exec(), base_encode(), bestdata_answer(), bestdata_break(), bestdata_dial(), bestdata_dialdigit(), bestdata_handle_escape(), bestdata_hangup(), bestdata_init(), bestdata_read(), bestdata_startplay(), bestdata_startrec(), bestdata_write(), build_alias(), build_conf(), build_device(), build_gateway(), build_mapping(), build_peer(), build_reply_digest(), build_route(), build_rpid(), build_transactions(), build_user(), builtin_atxfer(), builtin_automonitor(), builtin_blindtransfer(), builtin_function_checkmd5(), builtin_function_if(), builtin_function_iftime(), builtin_function_math(), builtin_function_md5(), builtin_function_regex(), builtin_function_set(), builtin_function_timeout_read(), builtin_function_timeout_write(), builtin_function_uridecode(), builtin_function_uriencode(), bump_gains(), cache_get_callno_locked(), cache_lookup_internal(), cache_save_hint(), calc_cost(), calc_metric(), calc_rxstamp(), calc_timestamp(), callerid_feed(), callerid_get_dtmf(), callerid_new(), callerid_read(), callerid_write(), careful_write(), cb_events(), chan_misdn_log(), chan_ringing(), chanavail_exec(), chandup(), changethread(), channel_find_locked(), chanspy_exec(), check_access(), check_auth(), check_availability(), check_beep(), check_for_conference(), check_header(), check_key(), check_pendings(), check_provisioning(), check_srcaddr(), check_user_full(), check_via(), cleanup_connection(), clearcbone(), cleardisplay(), clearflag(), cleartimer(), compare_weight(), compile_script(), complete_context_add_extension(), complete_context_add_ignorepat(), complete_context_add_include(), complete_context_dont_include(), complete_context_remove_extension(), complete_context_remove_ignorepat(), complete_show_application(), complete_show_dialplan_context(), complete_show_function(), complete_transfer(), compress_subclass(), conf_add(), conf_cmd(), conf_del(), conf_exec(), conf_flush(), conf_free(), conf_run(), config_load(), config_odbc(), config_text_file_load(), connection_made(), console_autoanswer(), controlplayback_exec(), convertcap(), copy(), copy_data_from_queue(), copy_header(), copy_message(), copy_via_headers(), count_exec(), create_addr(), create_addr_from_peer(), create_dirpath(), create_queue_member(), crypto_load(), csv_log(), curl_exec(), custom_log(), cut_exec(), cut_internal(), dbinit(), decode_frame(), del_exec(), del_identifier(), deltree_exec(), destroy_session(), destroy_trans(), dial_exec_full(), dictate_exec(), digitcollect(), digitdirect(), directory_exec(), disa_exec(), dns_parse_answer(), dnsmgr_init(), do_autokill(), do_cdr(), do_chanreads(), do_directory(), do_monitor(), do_parking_thread(), do_proxy_auth(), do_register(), do_register_expire(), do_reload(), do_senddigit(), do_state_change(), do_waiting(), dump_agents(), dump_queue(), dump_queue_members(), dundi_answer_entity(), dundi_answer_query(), dundi_decrypt(), dundi_discover(), dundi_encrypt(), dundi_error_output(), dundi_exec(), dundi_helper(), dundi_lookup_exec(), dundi_lookup_internal(), dundi_lookup_thread(), dundi_precache_full(), dundi_precache_internal(), dundi_precache_thread(), dundi_query(), dundi_query_thread(), dundi_rexmit(), dundi_send(), dundi_xmit(), dundifunc_read(), eagi_exec(), encrypt_frame(), enum_callback(), enumlookup_exec(), eval_exec(), exec_exec(), execif_exec(), expire_registry(), external_rtp_create(), feature_exec_app(), features_alloc(), features_call(), features_new(), festival_exec(), fillin_process(), find_cache(), find_call(), find_call_locked(), find_callno(), find_conf(), find_desc(), find_identifier(), find_matching_endwhile(), find_peer(), find_subchannel_and_lock(), find_subchannel_by_name(), find_tpeer(), find_transaction(), flash_exec(), forkcdr_exec(), forward_message(), func_check_sipdomain(), func_header_read(), function_db_exists(), function_db_read(), function_db_write(), function_enum(), function_eval(), function_fieldqty(), function_iaxpeer(), function_ilink(), function_sipchaninfo_read(), function_sippeer(), function_txtcidname(), g723_close(), g723_len(), g723_open(), g723_read(), g723_rewrite(), g723_write(), g723tolin_framein(), g726_16_open(), g726_16_rewrite(), g726_24_open(), g726_24_rewrite(), g726_32_open(), g726_32_rewrite(), g726_40_open(), g726_40_rewrite(), g726_close(), g726_read(), g726_write(), g726tolin_framein(), g729_close(), g729_open(), g729_read(), g729_rewrite(), g729_write(), generator_force(), get_alarms(), get_also_info(), get_callerid(), get_callerid_ast(), get_day(), get_destination(), get_dow(), get_exec(), get_group(), get_in_brackets(), get_input(), get_month(), get_rdnis(), get_refer_info(), get_timerange(), get_token(), get_wait_interval(), getdisplaybyname(), getflagbyname(), getkeybyname(), getstatebyname(), getsubbyname(), gosub_exec(), gosubif_exec(), goto_line(), goto_line_rel(), group_check_exec(), group_count_exec(), group_count_function_read(), group_function_write(), group_match_count_exec(), group_set_exec(), gsm_close(), gsm_open(), gsm_read(), gsm_rewrite(), gsm_write(), gsmtolin_framein(), h263_close(), h263_open(), h263_read(), h263_rewrite(), h263_write(), h323_gk_cycle(), handle_add_indication(), handle_command_response(), handle_common_options(), handle_context(), handle_error(), handle_exec(), handle_frame(), handle_getoption(), handle_hd_hf(), handle_init_event(), handle_link_data(), handle_macro(), handle_message(), handle_playtones(), handle_recordfile(), handle_remote_data(), handle_remove_indication(), handle_request(), handle_request_bye(), handle_request_info(), handle_request_invite(), handle_request_refer(), handle_request_register(), handle_request_subscribe(), handle_response(), handle_response_invite(), handle_response_peerpoke(), handle_response_register(), handle_root_token(), handle_show_application(), handle_show_applications(), handle_show_hints(), handle_show_indications(), handle_show_switches(), hangup_cause2sip(), hangup_connection(), hasvoicemail_exec(), i4l_answer(), i4l_break(), i4l_dial(), i4l_dialdigit(), i4l_handle_escape(), i4l_hangup(), i4l_init(), i4l_read(), i4l_setdev(), i4l_startrec(), i4l_write(), iax2_ack_registry(), iax2_answer(), iax2_call(), iax2_canmatch(), iax2_destroy(), iax2_devicestate(), iax2_do_register(), iax2_exec(), iax2_exists(), iax2_fixup(), iax2_hangup(), iax2_indicate(), iax2_matchmore(), iax2_poke_noanswer(), iax2_poke_peer(), iax2_predestroy(), iax2_prov_app(), iax2_provision(), iax2_read(), iax2_register(), iax2_request(), iax2_send(), iax2_setoption(), iax2_transfer(), iax2_trunk_queue(), iax2_write(), iax_error_output(), iax_park(), iax_park_thread(), iax_process_template(), iax_provision_reload(), iax_provision_version(), iax_template_parse(), ices_exec(), icesencode(), ilbc_close(), ilbc_open(), ilbc_read(), ilbc_rewrite(), ilbc_write(), ilbctolin_framein(), increase_call_count(), ind_load_module(), indexof(), init_batch(), init_logger(), init_logger_chain(), init_manager(), init_req(), init_resp(), io_grow(), is_our_turn(), ivr_dispatch(), jb_error_output(), jb_warning_output(), join_queue(), jpeg_read_image(), jpeg_write_image(), launch_monitor_thread(), launch_netscript(), launch_page(), launch_script(), launch_service(), leave_queue(), leave_voicemail(), linear_alloc(), linear_generator(), linear_release(), lintoadpcm_framein(), lintoalaw_framein(), lintog723_framein(), lintog723_frameout(), lintog726_framein(), lintogsm_framein(), lintogsm_frameout(), lintoilbc_framein(), lintoilbc_frameout(), lintolpc10_framein(), lintolpc10_frameout(), lintospeex_framein(), lintoulaw_framein(), listener(), load_config(), load_module(), load_modules(), load_moh_classes(), load_odbc_config(), load_pbx(), loadPemCert(), loadPemPrivateKey(), local_alloc(), local_answer(), local_ast_moh_start(), local_call(), local_devicestate(), local_fixup(), local_new(), local_queue_frame(), local_watcher(), local_write(), log_events(), lookupblacklist_exec(), lpc10tolin_framein(), macro_exec(), macroif_exec(), main(), make_integer(), make_str(), make_trunk(), manager_event(), math_exec(), md5_exec(), md5check_exec(), measurenoise(), memcpy_decrypt(), memcpy_encrypt(), mgcp_answer(), mgcp_call(), mgcp_fixup(), mgcp_hangup(), mgcp_indicate(), mgcp_new(), mgcp_postrequest(), mgcp_request(), mgcp_rtp_read(), mgcp_ss(), mgcp_write(), mgcpsock_read(), milliwatt_exec(), milliwatt_generate(), misdn_answer(), misdn_bridge(), misdn_call(), misdn_cfg_get(), misdn_cfg_get_config_string(), misdn_cfg_init(), misdn_cfg_is_msn_valid(), misdn_cfg_update_ptp(), misdn_digit(), misdn_facility_exec(), misdn_hangup(), misdn_indication(), misdn_request(), misdn_send_text(), misdn_set_opt_exec(), misdn_write(), mixmonitor_exec(), mkbrd(), mkif(), mkintf(), modem_answer(), modem_call(), modem_digit(), modem_fixup(), modem_hangup(), modem_request(), modem_setup(), moh0_exec(), moh1_exec(), moh2_exec(), moh3_exec(), moh_alloc(), moh_files_generator(), moh_files_release(), moh_generate(), moh_register(), moh_release(), moh_scan_files(), mohalloc(), monitor_handle_notowned(), monitor_handle_owned(), monmp3thread(), mp3_exec(), mp3play(), mssql_connect(), my_load_module(), my_zt_write(), nbs_alloc(), nbs_call(), nbs_hangup(), nbs_new(), nbs_request(), nbs_xread(), nbs_xwrite(), NBScat_exec(), NBScatplay(), netconsole(), network_verboser(), notify_metermaids(), notify_new_message(), odbc_load_module(), odbc_obj_connect(), odbc_obj_disconnect(), odbc_prepare_and_execute(), odbc_sanity_check(), odbc_smart_direct_execute(), odbc_smart_execute(), ogg_vorbis_close(), ogg_vorbis_getcomment(), ogg_vorbis_open(), ogg_vorbis_read(), ogg_vorbis_rewrite(), ogg_vorbis_seek(), ogg_vorbis_tell(), ogg_vorbis_trunc(), ogg_vorbis_write(), oh323_alloc(), oh323_answer(), oh323_call(), oh323_digit(), oh323_fixup(), oh323_hangup(), oh323_indicate(), oh323_request(), oh323_rtp_read(), oh323_set_rtp_peer(), oh323_write(), onevent(), op_colon(), op_div(), op_eq(), op_eqtilde(), op_minus(), op_negate(), op_plus(), op_rem(), op_times(), open_mailbox(), osp_build(), ospfinished_exec(), osplookup_exec(), ospnext_exec(), oss_indicate(), oss_new(), oss_read(), oss_request(), oss_write(), page_exec(), param_parse(), park_exec(), parkandannounce_exec(), parse(), parse_args(), parse_config(), parse_gain_value(), parse_ie(), parse_moved_contact(), parse_naptr(), parse_ok_contact(), parse_register_contact(), parse_request(), parse_sip_options(), parse_srv(), pbx_builtin_atimeout(), pbx_builtin_background(), pbx_builtin_dtimeout(), pbx_builtin_execiftime(), pbx_builtin_gotoif(), pbx_builtin_gotoiftime(), pbx_builtin_importvar(), pbx_builtin_pushvar_helper(), pbx_builtin_resetcdr(), pbx_builtin_rtimeout(), pbx_builtin_saynumber(), pbx_builtin_serialize_variables(), pbx_builtin_setglobalvar(), pbx_builtin_setlanguage(), pbx_builtin_setvar(), pbx_builtin_setvar_old(), pbx_builtin_waitexten(), pbx_exec(), pbx_extension_helper(), pbx_find_extension(), pbx_findapp(), pbx_findswitch(), pbx_load_module(), pbx_retrieve_variable(), pbx_substitute_variables_helper_full(), pcm_close(), pcm_open(), pcm_read(), pcm_rewrite(), pcm_write(), peer_set_srcaddr(), PGSQL_exec(), pgsql_log(), phase_d_handler(), phase_e_handler(), phone_answer(), phone_call(), phone_check_exception(), phone_digit(), phone_exception(), phone_hangup(), phone_mini_packet(), phone_new(), phone_read(), phone_request(), phone_setup(), phone_write(), phone_write_buf(), pickup_exec(), pl_odtworz_plik(), play_mailbox_owner(), play_message(), play_message_callerid(), play_message_category(), play_message_datetime(), play_message_duration(), play_record_review(), playback_exec(), playtones_alloc(), playtones_generator(), post_cdr(), powerof(), pqm_exec(), precache_trans(), precache_transactions(), printdigest(), privacy_exec(), process_ast_dsp(), process_message(), process_my_load_module(), process_opcode(), process_returncode(), process_rfc2833(), process_rfc3389(), process_sdp(), process_text_line(), progress(), put_exec(), queue_exec(), queue_frame_to_spies(), queue_function_qac(), queue_set_param(), quit_handler(), random_exec(), raw_hangup(), rbi_out(), read_agent_config(), read_config(), read_config_maps(), read_exec(), read_samples(), readfile_exec(), realtime_directory(), realtime_exec(), realtime_multi_odbc(), realtime_odbc(), realtime_peer(), realtime_update_exec(), rebuild_matrix(), receive_ademco_contact_id(), receive_dtmf_digits(), receive_message(), record_exec(), refresh_list(), register_request(), register_verify(), registry_authrequest(), registry_rerequest(), reload(), reload_agents(), reload_config(), reload_firmware(), reload_logger(), reload_queue_members(), reload_queues(), remap_feature(), remove_from_interfaces(), reply_digest(), reset_conf(), reset_global_eid(), restart_monitor(), restore_conference(), restore_gains(), retrans_pkt(), retrydial_exec(), return_exec(), ring_entry(), ring_one(), rpt(), rpt_call(), rpt_exec(), rpt_master(), rpt_tele_thread(), rpt_telemetry(), rqm_exec(), run_agi(), run_externnotify(), run_ras(), rxfax_exec(), safe_append(), save_conference(), saycharstr(), sayfile(), saynum(), sayunixtime_exec(), scan_service(), scan_thread(), sched_settime(), schedule_delivery(), send_callerid(), send_delay(), send_digit(), send_digit_to_chan(), send_dtmf(), send_packet(), send_request(), send_sound(), send_tone_burst(), send_trunk(), send_waveform_to_channel(), send_waveform_to_fd(), senddtmf_exec(), sendimage_exec(), sendmail(), sendpage(), sendtext_exec(), sendurl_exec(), set_actual_rxgain(), set_actual_txgain(), set_config(), set_destination(), set_dtmf_payload(), set_format(), set_local_capabilities(), set_member_paused(), set_state(), set_timing(), setcallerid_exec(), setcallerid_pres_exec(), setflag(), setformat(), setrdnis_exec(), settransfercapability_exec(), setup_incoming_call(), setup_rtp_connection(), setup_zap(), show_channeltypes(), show_dialplan_helper(), show_file_formats(), showdisplay(), showkeys(), sip_addheader(), sip_alloc(), sip_answer(), sip_call(), sip_devicestate(), sip_do_reload(), sip_dtmfmode(), sip_dump_history(), sip_fixup(), sip_getheader(), sip_hangup(), sip_indicate(), sip_new(), sip_notify(), sip_park(), sip_park_thread(), sip_poke_noanswer(), sip_poke_peer(), sip_reg_timeout(), sip_register(), sip_request_call(), sip_reregister(), sip_rtp_read(), sip_send_mwi_to_peer(), sip_set_rtp_peer(), sip_sipredirect(), sip_write(), sipsock_read(), skel_exec(), skinny_call(), skinny_fixup(), skinny_hangup(), skinny_indicate(), skinny_new(), skinny_req_parse(), skinny_request(), skinny_rtp_read(), skinny_session(), skinny_ss(), skinny_write(), slinear_close(), slinear_open(), slinear_read(), slinear_rewrite(), slinear_write(), sms_exec(), sms_generate(), sms_handleincoming(), sms_process(), sms_readfile(), socket_read(), softhangup_exec(), sort_exec(), sound_thread(), soundcard_init(), soundcard_setinput(), soundcard_setoutput(), soundcard_writeframe(), span_message(), spawn_dp_lookup(), spawn_mp3(), speex_get_wb_sz_at(), speex_samples(), speextolin_framein(), spy_detach(), sqlite_log(), srv_callback(), ss_thread(), start_spying(), starttimer(), statechange_queue(), store_config(), store_mixer(), store_next(), str2cause(), strcasestr(), stty(), stub_ast_check_signature(), stub_ast_check_signature_bin(), stub_ast_encdec_bin(), stub_ast_key_get(), stub_ast_sign(), stub_ast_sign_bin(), subscript(), swap_subs(), system_exec_helper(), tdd_feed(), tdd_new(), tds_load_module(), tds_log(), telem_lookup(), testclient_exec(), testserver_exec(), timed_read(), timing_read(), to_integer(), to_string(), tonepair_alloc(), tonepair_generator(), transfer_exec(), transmit_callinfo(), transmit_callstate(), transmit_connect(), transmit_diallednumber(), transmit_displaymessage(), transmit_displaynotify(), transmit_displaypromptstatus(), transmit_invite(), transmit_lamp_indication(), transmit_notify_with_mwi(), transmit_refer(), transmit_register(), transmit_request_with_auth(), transmit_response(), transmit_response_with_auth(), transmit_response_with_sdp(), transmit_ringer_mode(), transmit_speaker_mode(), transmit_state_notify(), transmit_tone(), transmit_trunk(), try_calling(), try_firmware(), try_load_key(), try_suggested_sip_codec(), try_transfer(), tvfix(), txfax_exec(), txtcidname_exec(), ulawtoalaw_framein(), ulawtolin_framein(), unalloc_sub(), unload_module(), unwrap_timestamp(), update_call_counter(), update_common_options(), update_config(), update_header(), update_key(), update_max_nontrunk(), update_max_trunk(), update_odbc(), update_registry(), upqm_exec(), used_blocks(), userevent_exec(), verbose_exec(), vm_authenticate(), vm_box_exists(), vm_change_password(), vm_exec(), vm_execmain(), vm_newuser(), vm_options(), vmauthenticate(), vox_close(), vox_open(), vox_read(), vox_rewrite(), vox_write(), vpb_bridge(), vpb_call(), vpb_fixup(), vpb_hangup(), vpb_new(), vpb_request(), vpb_write(), wait_file(), wait_file2(), wait_for_answer(), waitforring_exec(), waitforsilence_exec(), wav_close(), wav_open(), wav_read(), wav_rewrite(), wav_write(), write_header(), write_metadata(), writefile(), zap_fake_event(), zap_show_channel(), zap_show_status(), zapras_exec(), zt_answer(), zt_bridge(), zt_call(), zt_callwait(), zt_confmute(), zt_digit(), zt_disable_ec(), zt_enable_ec(), zt_fixup(), zt_get_index(), zt_handle_event(), zt_hangup(), zt_indicate(), zt_link(), zt_new(), zt_open(), zt_read(), zt_request(), zt_ring_phone(), zt_sendtext(), zt_set_hook(), zt_setoption(), zt_train_ec(), zt_unlink(), and zt_write().
00694 { 00695 struct logchannel *chan; 00696 char buf[BUFSIZ]; 00697 time_t t; 00698 struct tm tm; 00699 char date[256]; 00700 00701 va_list ap; 00702 00703 if (!logchannels) 00704 { 00705 /* 00706 * we don't have the logger chain configured yet, 00707 * so just log to stdout 00708 */ 00709 if (level != __LOG_VERBOSE) { 00710 va_start(ap, fmt); 00711 vsnprintf(buf, sizeof(buf), fmt, ap); 00712 va_end(ap); 00713 fputs(buf, stdout); 00714 } 00715 return; 00716 } 00717 00718 /* don't display LOG_DEBUG messages unless option_verbose _or_ option_debug 00719 are non-zero; LOG_DEBUG messages can still be displayed if option_debug 00720 is zero, if option_verbose is non-zero (this allows for 'level zero' 00721 LOG_DEBUG messages to be displayed, if the logmask on any channel 00722 allows it) 00723 */ 00724 if (!option_verbose && !option_debug && (level == __LOG_DEBUG)) { 00725 return; 00726 } 00727 00728 /* Ignore anything that never gets logged anywhere */ 00729 if (!(global_logmask & (1 << level))) 00730 return; 00731 00732 /* Ignore anything other than the currently debugged file if there is one */ 00733 if ((level == __LOG_DEBUG) && !ast_strlen_zero(debug_filename) && strcasecmp(debug_filename, file)) 00734 return; 00735 00736 /* begin critical section */ 00737 ast_mutex_lock(&loglock); 00738 00739 time(&t); 00740 localtime_r(&t, &tm); 00741 strftime(date, sizeof(date), dateformat, &tm); 00742 00743 if (logfiles.event_log && level == __LOG_EVENT) { 00744 va_start(ap, fmt); 00745 00746 fprintf(eventlog, "%s asterisk[%d]: ", date, getpid()); 00747 vfprintf(eventlog, fmt, ap); 00748 fflush(eventlog); 00749 00750 va_end(ap); 00751 ast_mutex_unlock(&loglock); 00752 return; 00753 } 00754 00755 chan = logchannels; 00756 while(chan && !chan->disabled) { 00757 /* Check syslog channels */ 00758 if (chan->type == LOGTYPE_SYSLOG && (chan->logmask & (1 << level))) { 00759 va_start(ap, fmt); 00760 ast_log_vsyslog(level, file, line, function, fmt, ap); 00761 va_end(ap); 00762 /* Console channels */ 00763 } else if ((chan->logmask & (1 << level)) && (chan->type == LOGTYPE_CONSOLE)) { 00764 char linestr[128]; 00765 char tmp1[80], tmp2[80], tmp3[80], tmp4[80]; 00766 00767 if (level != __LOG_VERBOSE) { 00768 sprintf(linestr, "%d", line); 00769 snprintf(buf, sizeof(buf), option_timestamp ? "[%s] %s[%ld]: %s:%s %s: " : "%s %s[%ld]: %s:%s %s: ", 00770 date, 00771 term_color(tmp1, levels[level], colors[level], 0, sizeof(tmp1)), 00772 (long)GETTID(), 00773 term_color(tmp2, file, COLOR_BRWHITE, 0, sizeof(tmp2)), 00774 term_color(tmp3, linestr, COLOR_BRWHITE, 0, sizeof(tmp3)), 00775 term_color(tmp4, function, COLOR_BRWHITE, 0, sizeof(tmp4))); 00776 00777 ast_console_puts(buf); 00778 va_start(ap, fmt); 00779 vsnprintf(buf, sizeof(buf), fmt, ap); 00780 va_end(ap); 00781 ast_console_puts(buf); 00782 } 00783 /* File channels */ 00784 } else if ((chan->logmask & (1 << level)) && (chan->fileptr)) { 00785 int res; 00786 snprintf(buf, sizeof(buf), option_timestamp ? "[%s] %s[%ld]: " : "%s %s[%ld] %s: ", date, 00787 levels[level], (long)GETTID(), file); 00788 res = fprintf(chan->fileptr, buf); 00789 if (res <= 0 && buf[0] != '\0') { /* Error, no characters printed */ 00790 fprintf(stderr,"**** Asterisk Logging Error: ***********\n"); 00791 if (errno == ENOMEM || errno == ENOSPC) { 00792 fprintf(stderr, "Asterisk logging error: Out of disk space, can't log to log file %s\n", chan->filename); 00793 } else 00794 fprintf(stderr, "Logger Warning: Unable to write to log file '%s': %s (disabled)\n", chan->filename, strerror(errno)); 00795 manager_event(EVENT_FLAG_SYSTEM, "LogChannel", "Channel: %s\r\nEnabled: No\r\nReason: %d - %s\r\n", chan->filename, errno, strerror(errno)); 00796 chan->disabled = 1; 00797 } else { 00798 /* No error message, continue printing */ 00799 va_start(ap, fmt); 00800 vsnprintf(buf, sizeof(buf), fmt, ap); 00801 va_end(ap); 00802 term_strip(buf, buf, sizeof(buf)); 00803 fputs(buf, chan->fileptr); 00804 fflush(chan->fileptr); 00805 } 00806 } 00807 chan = chan->next; 00808 } 00809 00810 ast_mutex_unlock(&loglock); 00811 /* end critical section */ 00812 if (filesize_reload_needed) { 00813 reload_logger(1); 00814 ast_log(LOG_EVENT,"Rotated Logs Per SIGXFSZ (Exceeded file size limit)\n"); 00815 if (option_verbose) 00816 ast_verbose("Rotated Logs Per SIGXFSZ (Exceeded file size limit)\n"); 00817 } 00818 }
static void ast_log_vsyslog | ( | int | level, | |
const char * | file, | |||
int | line, | |||
const char * | function, | |||
const char * | fmt, | |||
va_list | args | |||
) | [static] |
Definition at line 664 of file logger.c.
References __LOG_DEBUG, __LOG_DTMF, __LOG_VERBOSE, GETTID, levels, s, syslog_level_map, SYSLOG_NLEVELS, and term_strip().
Referenced by ast_log().
00665 { 00666 char buf[BUFSIZ]; 00667 char *s; 00668 00669 if (level >= SYSLOG_NLEVELS) { 00670 /* we are locked here, so cannot ast_log() */ 00671 fprintf(stderr, "ast_log_vsyslog called with bogus level: %d\n", level); 00672 return; 00673 } 00674 if (level == __LOG_VERBOSE) { 00675 snprintf(buf, sizeof(buf), "VERBOSE[%ld]: ", (long)GETTID()); 00676 level = __LOG_DEBUG; 00677 } else if (level == __LOG_DTMF) { 00678 snprintf(buf, sizeof(buf), "DTMF[%ld]: ", (long)GETTID()); 00679 level = __LOG_DEBUG; 00680 } else { 00681 snprintf(buf, sizeof(buf), "%s[%ld]: %s:%d in %s: ", 00682 levels[level], (long)GETTID(), file, line, function); 00683 } 00684 s = buf + strlen(buf); 00685 vsnprintf(s, sizeof(buf) - strlen(buf), fmt, args); 00686 term_strip(s, s, strlen(s) + 1); 00687 syslog(syslog_level_map[level], "%s", buf); 00688 }
AST_MUTEX_DEFINE_STATIC | ( | loglock | ) |
AST_MUTEX_DEFINE_STATIC | ( | msglist_lock | ) |
void ast_queue_log | ( | const char * | queuename, | |
const char * | callid, | |||
const char * | agent, | |||
const char * | event, | |||
const char * | fmt, | |||
... | ||||
) |
Definition at line 367 of file logger.c.
References ast_mutex_lock(), ast_mutex_unlock(), and qlog.
Referenced by __login_exec(), action_agent_callback_login(), agent_hangup(), init_logger(), queue_exec(), reload_logger(), set_member_paused(), and try_calling().
00368 { 00369 va_list ap; 00370 ast_mutex_lock(&loglock); 00371 if (qlog) { 00372 va_start(ap, fmt); 00373 fprintf(qlog, "%ld|%s|%s|%s|%s|", (long)time(NULL), callid, queuename, agent, event); 00374 vfprintf(qlog, fmt, ap); 00375 fprintf(qlog, "\n"); 00376 va_end(ap); 00377 fflush(qlog); 00378 } 00379 ast_mutex_unlock(&loglock); 00380 }
int ast_register_verbose | ( | void(*)(const char *string, int opos, int replacelast, int complete) | v | ) |
Definition at line 932 of file logger.c.
References ast_mutex_lock(), ast_mutex_unlock(), list, malloc, msglist::msg, verb::next, msglist::next, verb::verboser, and verboser.
Referenced by ast_makesocket(), main(), and show_console().
00933 { 00934 struct msglist *m; 00935 struct verb *tmp; 00936 /* XXX Should be more flexible here, taking > 1 verboser XXX */ 00937 if ((tmp = malloc(sizeof (struct verb)))) { 00938 tmp->verboser = v; 00939 ast_mutex_lock(&msglist_lock); 00940 tmp->next = verboser; 00941 verboser = tmp; 00942 m = list; 00943 while(m) { 00944 /* Send all the existing entries that we have queued (i.e. they're likely to have missed) */ 00945 v(m->msg, 0, 0, 1); 00946 m = m->next; 00947 } 00948 ast_mutex_unlock(&msglist_lock); 00949 return 0; 00950 } 00951 return -1; 00952 }
int ast_unregister_verbose | ( | void(*)(const char *string, int opos, int replacelast, int complete) | v | ) |
Definition at line 954 of file logger.c.
References ast_mutex_lock(), ast_mutex_unlock(), free, verb::next, verboser, and verb::verboser.
Referenced by exit_now().
00955 { 00956 int res = -1; 00957 struct verb *tmp, *tmpl=NULL; 00958 ast_mutex_lock(&msglist_lock); 00959 tmp = verboser; 00960 while(tmp) { 00961 if (tmp->verboser == v) { 00962 if (tmpl) 00963 tmpl->next = tmp->next; 00964 else 00965 verboser = tmp->next; 00966 free(tmp); 00967 break; 00968 } 00969 tmpl = tmp; 00970 tmp = tmp->next; 00971 } 00972 if (tmp) 00973 res = 0; 00974 ast_mutex_unlock(&msglist_lock); 00975 return res; 00976 }
void ast_verbose | ( | const char * | fmt, | |
... | ||||
) |
Definition at line 820 of file logger.c.
References ast_log(), ast_mutex_lock(), ast_mutex_unlock(), dateformat, free, last, list, LOG_ERROR, LOG_VERBOSE, malloc, MAX_MSG_QUEUE, msglist::msg, msgcnt, verb::next, msglist::next, ast_imager::next, option_timestamp, strdup, t, verb::verboser, and verboser.
Referenced by __agent_start_monitoring(), __ast_pbx_run(), __build_step(), __grab_token(), __load_resource(), __login_exec(), __sip_destroy(), __unload_module(), __zt_exception(), _while_exec(), accept_thread(), action_agent_callback_login(), add_codec_to_sdp(), add_noncodec_to_sdp(), add_realm_authentication(), add_sdp(), adsi_exec(), adsi_prog(), advanced_options(), agent_call(), agent_read(), agentmonitoroutgoing_exec(), agi_debug_cli(), alarmreceiver_exec(), alsa_answer(), alsa_call(), alsa_digit(), alsa_hangup(), alsa_text(), append_mapping(), arg_parse(), ast_ael_compile(), ast_app_has_voicemail(), ast_app_messagecount(), ast_cdr_unregister(), ast_channel_bridge(), ast_channel_register(), ast_channel_unregister(), ast_context_add_include2(), ast_context_add_switch2(), ast_context_create(), ast_custom_function_register(), ast_custom_function_unregister(), ast_dnsmgr_lookup(), ast_feature_interpret(), ast_feature_request_and_dial(), ast_format_register(), ast_format_unregister(), ast_frame_dump(), ast_image_register(), ast_image_unregister(), ast_log(), ast_manager_register_struct(), ast_manager_unregister(), ast_module_reload(), ast_moh_destroy(), ast_moh_start(), ast_netsock_bindaddr(), ast_park_call(), ast_pbx_outgoing_app(), ast_pbx_outgoing_exten(), ast_pbx_run_app(), ast_play_and_prepend(), ast_play_and_record_full(), ast_record_review(), ast_register_application(), ast_register_feature(), ast_register_translator(), ast_remotecontrol(), ast_rtp_raw_write(), ast_rtp_read(), ast_rtp_reload(), ast_rtp_sendcng(), ast_rtp_senddigit(), ast_say_number_full_he(), ast_set_indication_country(), ast_set_priority(), ast_streamfile(), ast_unregister_application(), ast_unregister_indication_country(), ast_unregister_translator(), async_wait(), attempt_reconnect(), attempt_thread(), attempt_transfer(), build_conf(), build_device(), build_gateway(), builtin_automonitor(), builtin_blindtransfer(), builtin_disconnect(), builtin_function_timeout_write(), cb_extensionstate(), channel_spy(), check_for_conference(), check_user_full(), check_via(), conf_exec(), conf_run(), config_text_file_load(), config_text_file_save(), cpeid_exec(), database_increment(), del_exec(), deltree_exec(), dial_exec_full(), dialout(), do_chanreads(), do_housekeeping(), do_monitor(), do_parking_thread(), do_register_auth(), do_waiting(), dumpchan_exec(), dundi_debug_output(), exit_now(), find_command(), find_subchannel_and_lock(), find_subchannel_by_name(), flash_exec(), function_ilink(), get_also_info(), get_callerid(), get_callerid_ast(), get_case(), get_destination(), get_exec(), get_rdnis(), get_refer_info(), grab_else(), h323_ep_hangup(), h323_reload(), handle_command_response(), handle_context(), handle_exec(), handle_getoption(), handle_init_event(), handle_macro(), handle_message(), handle_request(), handle_request_info(), handle_request_invite(), handle_request_message(), handle_request_register(), handle_request_subscribe(), handle_response(), handle_root_token(), handle_verbose(), i4l_read(), iax2_ack_registry(), iax2_bridge(), iax2_exec(), iax2_hangup(), iax2_prov_app(), iax_debug_output(), iax_provision_reload(), init_logger(), init_manager(), ivr_demo_func(), jb_debug_output(), launch_script(), leave_voicemail(), list_route(), listener(), load_config(), load_module(), load_modules(), load_pbx(), log_events(), lookupcidname_exec(), macro_exec(), main(), mgcp_answer(), mgcp_call(), mgcp_hangup(), mgcp_indicate(), mgcp_new(), mgcp_reload(), mgcp_request(), mgcp_ss(), mgcpsock_read(), misdn_call(), mixmonitor_thread(), modem_hangup(), modem_setup(), moh_alloc(), moh_files_alloc(), moh_files_release(), moh_release(), monitor_handle_notowned(), monitor_handle_owned(), netconsole(), odbc_do_query(), odbc_init(), odbc_load_module(), odbc_log(), odbc_unload_module(), oss_answer(), oss_call(), oss_digit(), oss_hangup(), oss_text(), park_exec(), parkandannounce_exec(), parse(), parse_config(), parse_register_contact(), parse_srv(), pbx_builtin_atimeout(), pbx_builtin_dtimeout(), pbx_builtin_goto(), pbx_builtin_pushvar_helper(), pbx_builtin_rtimeout(), pbx_builtin_setvar_helper(), pbx_builtin_waitexten(), pbx_extension_helper(), phone_check_exception(), phone_exception(), phone_hangup(), play_message_callerid(), play_record_review(), playtone(), privacy_exec(), process_ast_dsp(), process_message(), process_sdp(), put_exec(), queue_exec(), quit_handler(), random_exec(), read_exec(), realtime_exec(), receive_ademco_contact_id(), receive_dtmf_digits(), receive_message(), refresh_list(), reg_source_db(), reload_config(), reload_firmware(), reload_logger(), remap_feature(), resend_response(), restart_monitor(), retrans_pkt(), ring_entry(), rpt(), rpt_exec(), run_agi(), run_ras(), say_periodic_announcement(), say_position(), send_cwcidspill(), send_request(), send_response(), send_tone_burst(), set_config(), set_destination(), setformat(), settransfercapability_exec(), setup_incoming_call(), setup_zap(), sip_getheader(), sip_reload(), sip_scheddestroy(), sip_sendtext(), sipsock_read(), skinny_answer(), skinny_call(), skinny_hangup(), skinny_indicate(), skinny_new(), skinny_request(), skinny_session(), skinny_ss(), sms_debug(), socket_read(), ss_thread(), stoptone(), timing_read(), transmit_connection_del(), transmit_connection_del_w_params(), transmit_displaymessage(), transmit_displaynotify(), transmit_displaypromptstatus(), transmit_invite(), transmit_modify_request(), transmit_notify_request(), transmit_notify_request_with_callerid(), transmit_notify_with_mwi(), transmit_notify_with_sipfrag(), transmit_register(), transmit_reinvite_with_sdp(), transmit_response(), transmit_sip_request(), try_load_key(), unload_module(), update_registry(), verbose_exec(), vm_authenticate(), vm_execmain(), vpb_answer(), vpb_bridge(), vpb_call(), vpb_digit(), vpb_fixup(), vpb_hangup(), vpb_indicate(), vpb_new(), vpb_request(), vpb_write(), wait_for_answer(), waitforring_exec(), waitforsilence_exec(), write_metadata(), zapras_exec(), zt_call(), zt_handle_event(), zt_hangup(), zt_read(), and zt_request().
00821 { 00822 static char stuff[4096]; 00823 static int len = 0; 00824 static int replacelast = 0; 00825 00826 int complete; 00827 int olen; 00828 struct msglist *m; 00829 struct verb *v; 00830 00831 va_list ap; 00832 va_start(ap, fmt); 00833 00834 if (option_timestamp) { 00835 time_t t; 00836 struct tm tm; 00837 char date[40]; 00838 char *datefmt; 00839 00840 time(&t); 00841 localtime_r(&t, &tm); 00842 strftime(date, sizeof(date), dateformat, &tm); 00843 datefmt = alloca(strlen(date) + 3 + strlen(fmt) + 1); 00844 if (datefmt) { 00845 sprintf(datefmt, "[%s] %s", date, fmt); 00846 fmt = datefmt; 00847 } 00848 } 00849 00850 /* this lock is also protecting against multiple threads 00851 being in this function at the same time, so it must be 00852 held before any of the static variables are accessed 00853 */ 00854 ast_mutex_lock(&msglist_lock); 00855 00856 /* there is a potential security problem here: if formatting 00857 the current date using 'dateformat' results in a string 00858 containing '%', then the vsnprintf() call below will 00859 probably try to access random memory 00860 */ 00861 vsnprintf(stuff + len, sizeof(stuff) - len, fmt, ap); 00862 va_end(ap); 00863 00864 olen = len; 00865 len = strlen(stuff); 00866 00867 complete = (stuff[len - 1] == '\n') ? 1 : 0; 00868 00869 /* If we filled up the stuff completely, then log it even without the '\n' */ 00870 if (len >= sizeof(stuff) - 1) { 00871 complete = 1; 00872 len = 0; 00873 } 00874 00875 if (complete) { 00876 if (msgcnt < MAX_MSG_QUEUE) { 00877 /* Allocate new structure */ 00878 if ((m = malloc(sizeof(*m)))) 00879 msgcnt++; 00880 } else { 00881 /* Recycle the oldest entry */ 00882 m = list; 00883 list = list->next; 00884 free(m->msg); 00885 } 00886 if (m) { 00887 m->msg = strdup(stuff); 00888 if (m->msg) { 00889 if (last) 00890 last->next = m; 00891 else 00892 list = m; 00893 m->next = NULL; 00894 last = m; 00895 } else { 00896 msgcnt--; 00897 ast_log(LOG_ERROR, "Out of memory\n"); 00898 free(m); 00899 } 00900 } 00901 } 00902 00903 for (v = verboser; v; v = v->next) 00904 v->verboser(stuff, olen, replacelast, complete); 00905 00906 ast_log(LOG_VERBOSE, "%s", stuff); 00907 00908 if (len) { 00909 if (!complete) 00910 replacelast = 1; 00911 else 00912 replacelast = len = 0; 00913 } 00914 00915 ast_mutex_unlock(&msglist_lock); 00916 }
int ast_verbose_dmesg | ( | void(*)(const char *string, int opos, int replacelast, int complete) | v | ) |
Definition at line 918 of file logger.c.
References ast_mutex_lock(), ast_mutex_unlock(), list, msglist::msg, and msglist::next.
00919 { 00920 struct msglist *m; 00921 ast_mutex_lock(&msglist_lock); 00922 m = list; 00923 while(m) { 00924 /* Send all the existing entries that we have queued (i.e. they're likely to have missed) */ 00925 v(m->msg, 0, 0, 1); 00926 m = m->next; 00927 } 00928 ast_mutex_unlock(&msglist_lock); 00929 return 0; 00930 }
void close_logger | ( | void | ) |
Definition at line 644 of file logger.c.
References ast_mutex_lock(), ast_mutex_unlock(), free, last, list, msglist::msg, msgcnt, and msglist::next.
Referenced by quit_handler().
00645 { 00646 struct msglist *m, *tmp; 00647 00648 ast_mutex_lock(&msglist_lock); 00649 m = list; 00650 while(m) { 00651 if (m->msg) { 00652 free(m->msg); 00653 } 00654 tmp = m->next; 00655 free(m); 00656 m = tmp; 00657 } 00658 list = last = NULL; 00659 msgcnt = 0; 00660 ast_mutex_unlock(&msglist_lock); 00661 return; 00662 }
static int handle_logger_reload | ( | int | fd, | |
int | argc, | |||
char * | argv[] | |||
) | [static] |
Definition at line 503 of file logger.c.
References ast_cli(), reload_logger(), RESULT_FAILURE, and RESULT_SUCCESS.
00504 { 00505 if(reload_logger(0)) { 00506 ast_cli(fd, "Failed to reload the logger\n"); 00507 return RESULT_FAILURE; 00508 } else 00509 return RESULT_SUCCESS; 00510 }
static int handle_logger_rotate | ( | int | fd, | |
int | argc, | |||
char * | argv[] | |||
) | [static] |
Definition at line 512 of file logger.c.
References ast_cli(), reload_logger(), RESULT_FAILURE, and RESULT_SUCCESS.
00513 { 00514 if(reload_logger(1)) { 00515 ast_cli(fd, "Failed to reload the logger and rotate log files\n"); 00516 return RESULT_FAILURE; 00517 } else 00518 return RESULT_SUCCESS; 00519 }
static int handle_logger_show_channels | ( | int | fd, | |
int | argc, | |||
char * | argv[] | |||
) | [static] |
Definition at line 523 of file logger.c.
References __LOG_DEBUG, __LOG_DTMF, __LOG_ERROR, __LOG_EVENT, __LOG_NOTICE, __LOG_VERBOSE, __LOG_WARNING, ast_cli(), ast_mutex_lock(), ast_mutex_unlock(), logchannel::disabled, logchannel::filename, FORMATL, logchannels, logchannel::logmask, LOGTYPE_CONSOLE, LOGTYPE_SYSLOG, logchannel::next, RESULT_SUCCESS, and logchannel::type.
00524 { 00525 #define FORMATL "%-35.35s %-8.8s %-9.9s " 00526 struct logchannel *chan; 00527 00528 ast_mutex_lock(&loglock); 00529 00530 chan = logchannels; 00531 ast_cli(fd,FORMATL, "Channel", "Type", "Status"); 00532 ast_cli(fd, "Configuration\n"); 00533 ast_cli(fd,FORMATL, "-------", "----", "------"); 00534 ast_cli(fd, "-------------\n"); 00535 while (chan) { 00536 ast_cli(fd, FORMATL, chan->filename, chan->type==LOGTYPE_CONSOLE ? "Console" : (chan->type==LOGTYPE_SYSLOG ? "Syslog" : "File"), 00537 chan->disabled ? "Disabled" : "Enabled"); 00538 ast_cli(fd, " - "); 00539 if (chan->logmask & (1 << __LOG_DEBUG)) 00540 ast_cli(fd, "Debug "); 00541 if (chan->logmask & (1 << __LOG_DTMF)) 00542 ast_cli(fd, "DTMF "); 00543 if (chan->logmask & (1 << __LOG_VERBOSE)) 00544 ast_cli(fd, "Verbose "); 00545 if (chan->logmask & (1 << __LOG_WARNING)) 00546 ast_cli(fd, "Warning "); 00547 if (chan->logmask & (1 << __LOG_NOTICE)) 00548 ast_cli(fd, "Notice "); 00549 if (chan->logmask & (1 << __LOG_ERROR)) 00550 ast_cli(fd, "Error "); 00551 if (chan->logmask & (1 << __LOG_EVENT)) 00552 ast_cli(fd, "Event "); 00553 ast_cli(fd, "\n"); 00554 chan = chan->next; 00555 } 00556 ast_cli(fd, "\n"); 00557 00558 ast_mutex_unlock(&loglock); 00559 00560 return RESULT_SUCCESS; 00561 }
static int handle_SIGXFSZ | ( | int | sig | ) | [static] |
Definition at line 596 of file logger.c.
References filesize_reload_needed.
Referenced by init_logger().
00597 { 00598 /* Indicate need to reload */ 00599 filesize_reload_needed = 1; 00600 return 0; 00601 }
int init_logger | ( | void | ) |
Definition at line 603 of file logger.c.
References ast_cli_register(), ast_config_AST_LOG_DIR, ast_log(), ast_queue_log(), ast_verbose(), EVENTLOG, eventlog, handle_SIGXFSZ(), init_logger_chain(), LOG_ERROR, LOG_EVENT, logfiles, logger_show_channels_cli, option_verbose, qlog, QUEUELOG, reload_logger_cli, and rotate_logger_cli.
Referenced by main().
00604 { 00605 char tmp[256]; 00606 int res = 0; 00607 00608 /* auto rotate if sig SIGXFSZ comes a-knockin */ 00609 (void) signal(SIGXFSZ,(void *) handle_SIGXFSZ); 00610 00611 /* register the relaod logger cli command */ 00612 ast_cli_register(&reload_logger_cli); 00613 ast_cli_register(&rotate_logger_cli); 00614 ast_cli_register(&logger_show_channels_cli); 00615 00616 mkdir((char *)ast_config_AST_LOG_DIR, 0755); 00617 00618 /* create log channels */ 00619 init_logger_chain(); 00620 00621 /* create the eventlog */ 00622 if (logfiles.event_log) { 00623 mkdir((char *)ast_config_AST_LOG_DIR, 0755); 00624 snprintf(tmp, sizeof(tmp), "%s/%s", (char *)ast_config_AST_LOG_DIR, EVENTLOG); 00625 eventlog = fopen((char *)tmp, "a"); 00626 if (eventlog) { 00627 ast_log(LOG_EVENT, "Started Asterisk Event Logger\n"); 00628 if (option_verbose) 00629 ast_verbose("Asterisk Event Logger Started %s\n",(char *)tmp); 00630 } else { 00631 ast_log(LOG_ERROR, "Unable to create event log: %s\n", strerror(errno)); 00632 res = -1; 00633 } 00634 } 00635 00636 if (logfiles.queue_log) { 00637 snprintf(tmp, sizeof(tmp), "%s/%s", (char *)ast_config_AST_LOG_DIR, QUEUELOG); 00638 qlog = fopen(tmp, "a"); 00639 ast_queue_log("NONE", "NONE", "NONE", "QUEUESTART", "%s", ""); 00640 } 00641 return res; 00642 }
static void init_logger_chain | ( | void | ) | [static] |
Definition at line 289 of file logger.c.
References ast_config_destroy(), ast_config_load(), ast_log(), ast_mutex_lock(), ast_mutex_unlock(), ast_true(), ast_variable_browse(), ast_variable_retrieve(), cfg, dateformat, free, global_logmask, hostname, LOG_WARNING, logchannels, logfiles, logchannel::logmask, LOGTYPE_CONSOLE, make_logchannel(), malloc, logchannel::next, s, logchannel::type, and var.
Referenced by init_logger(), and reload_logger().
00290 { 00291 struct logchannel *chan, *cur; 00292 struct ast_config *cfg; 00293 struct ast_variable *var; 00294 char *s; 00295 00296 /* delete our list of log channels */ 00297 ast_mutex_lock(&loglock); 00298 chan = logchannels; 00299 while (chan) { 00300 cur = chan->next; 00301 free(chan); 00302 chan = cur; 00303 } 00304 logchannels = NULL; 00305 ast_mutex_unlock(&loglock); 00306 00307 global_logmask = 0; 00308 errno = 0; 00309 /* close syslog */ 00310 closelog(); 00311 00312 cfg = ast_config_load("logger.conf"); 00313 00314 /* If no config file, we're fine, set default options. */ 00315 if (!cfg) { 00316 if (errno) 00317 fprintf(stderr, "Unable to open logger.conf: %s; default settings will be used.\n", strerror(errno)); 00318 else 00319 fprintf(stderr, "Errors detected in logger.conf: see above; default settings will be used.\n"); 00320 chan = malloc(sizeof(struct logchannel)); 00321 memset(chan, 0, sizeof(struct logchannel)); 00322 chan->type = LOGTYPE_CONSOLE; 00323 chan->logmask = 28; /*warning,notice,error */ 00324 chan->next = logchannels; 00325 logchannels = chan; 00326 global_logmask |= chan->logmask; 00327 return; 00328 } 00329 00330 ast_mutex_lock(&loglock); 00331 if ((s = ast_variable_retrieve(cfg, "general", "appendhostname"))) { 00332 if(ast_true(s)) { 00333 if(gethostname(hostname, sizeof(hostname)-1)) { 00334 ast_copy_string(hostname, "unknown", sizeof(hostname)); 00335 ast_log(LOG_WARNING, "What box has no hostname???\n"); 00336 } 00337 } else 00338 hostname[0] = '\0'; 00339 } else 00340 hostname[0] = '\0'; 00341 if ((s = ast_variable_retrieve(cfg, "general", "dateformat"))) { 00342 ast_copy_string(dateformat, s, sizeof(dateformat)); 00343 } else 00344 ast_copy_string(dateformat, "%b %e %T", sizeof(dateformat)); 00345 if ((s = ast_variable_retrieve(cfg, "general", "queue_log"))) { 00346 logfiles.queue_log = ast_true(s); 00347 } 00348 if ((s = ast_variable_retrieve(cfg, "general", "event_log"))) { 00349 logfiles.event_log = ast_true(s); 00350 } 00351 00352 var = ast_variable_browse(cfg, "logfiles"); 00353 while(var) { 00354 chan = make_logchannel(var->name, var->value, var->lineno); 00355 if (chan) { 00356 chan->next = logchannels; 00357 logchannels = chan; 00358 global_logmask |= chan->logmask; 00359 } 00360 var = var->next; 00361 } 00362 00363 ast_config_destroy(cfg); 00364 ast_mutex_unlock(&loglock); 00365 }
static int make_components | ( | char * | s, | |
int | lineno | |||
) | [static] |
Definition at line 141 of file logger.c.
References __LOG_DEBUG, __LOG_DTMF, __LOG_ERROR, __LOG_EVENT, __LOG_NOTICE, __LOG_VERBOSE, __LOG_WARNING, and strsep().
Referenced by make_logchannel().
00142 { 00143 char *w; 00144 int res = 0; 00145 char *stringp=NULL; 00146 stringp=s; 00147 w = strsep(&stringp, ","); 00148 while(w) { 00149 while(*w && (*w < 33)) 00150 w++; 00151 if (!strcasecmp(w, "error")) 00152 res |= (1 << __LOG_ERROR); 00153 else if (!strcasecmp(w, "warning")) 00154 res |= (1 << __LOG_WARNING); 00155 else if (!strcasecmp(w, "notice")) 00156 res |= (1 << __LOG_NOTICE); 00157 else if (!strcasecmp(w, "event")) 00158 res |= (1 << __LOG_EVENT); 00159 else if (!strcasecmp(w, "debug")) 00160 res |= (1 << __LOG_DEBUG); 00161 else if (!strcasecmp(w, "verbose")) 00162 res |= (1 << __LOG_VERBOSE); 00163 else if (!strcasecmp(w, "dtmf")) 00164 res |= (1 << __LOG_DTMF); 00165 else { 00166 fprintf(stderr, "Logfile Warning: Unknown keyword '%s' at line %d of logger.conf\n", w, lineno); 00167 } 00168 w = strsep(&stringp, ","); 00169 } 00170 return res; 00171 }
static struct logchannel* make_logchannel | ( | char * | channel, | |
char * | components, | |||
int | lineno | |||
) | [static] |
Definition at line 173 of file logger.c.
References ast_config_AST_LOG_DIR, ast_strlen_zero(), logchannel::facility, logchannel::filename, logchannel::fileptr, free, hostname, logchannel::logmask, LOGTYPE_CONSOLE, LOGTYPE_FILE, LOGTYPE_SYSLOG, make_components(), malloc, and logchannel::type.
Referenced by init_logger_chain().
00174 { 00175 struct logchannel *chan; 00176 char *facility; 00177 #ifndef SOLARIS 00178 CODE *cptr; 00179 #endif 00180 00181 if (ast_strlen_zero(channel)) 00182 return NULL; 00183 chan = malloc(sizeof(struct logchannel)); 00184 00185 if (!chan) /* Can't allocate memory */ 00186 return NULL; 00187 00188 memset(chan, 0, sizeof(struct logchannel)); 00189 if (!strcasecmp(channel, "console")) { 00190 chan->type = LOGTYPE_CONSOLE; 00191 } else if (!strncasecmp(channel, "syslog", 6)) { 00192 /* 00193 * syntax is: 00194 * syslog.facility => level,level,level 00195 */ 00196 facility = strchr(channel, '.'); 00197 if(!facility++ || !facility) { 00198 facility = "local0"; 00199 } 00200 00201 #ifndef SOLARIS 00202 /* 00203 * Walk through the list of facilitynames (defined in sys/syslog.h) 00204 * to see if we can find the one we have been given 00205 */ 00206 chan->facility = -1; 00207 cptr = facilitynames; 00208 while (cptr->c_name) { 00209 if (!strcasecmp(facility, cptr->c_name)) { 00210 chan->facility = cptr->c_val; 00211 break; 00212 } 00213 cptr++; 00214 } 00215 #else 00216 chan->facility = -1; 00217 if (!strcasecmp(facility, "kern")) 00218 chan->facility = LOG_KERN; 00219 else if (!strcasecmp(facility, "USER")) 00220 chan->facility = LOG_USER; 00221 else if (!strcasecmp(facility, "MAIL")) 00222 chan->facility = LOG_MAIL; 00223 else if (!strcasecmp(facility, "DAEMON")) 00224 chan->facility = LOG_DAEMON; 00225 else if (!strcasecmp(facility, "AUTH")) 00226 chan->facility = LOG_AUTH; 00227 else if (!strcasecmp(facility, "SYSLOG")) 00228 chan->facility = LOG_SYSLOG; 00229 else if (!strcasecmp(facility, "LPR")) 00230 chan->facility = LOG_LPR; 00231 else if (!strcasecmp(facility, "NEWS")) 00232 chan->facility = LOG_NEWS; 00233 else if (!strcasecmp(facility, "UUCP")) 00234 chan->facility = LOG_UUCP; 00235 else if (!strcasecmp(facility, "CRON")) 00236 chan->facility = LOG_CRON; 00237 else if (!strcasecmp(facility, "LOCAL0")) 00238 chan->facility = LOG_LOCAL0; 00239 else if (!strcasecmp(facility, "LOCAL1")) 00240 chan->facility = LOG_LOCAL1; 00241 else if (!strcasecmp(facility, "LOCAL2")) 00242 chan->facility = LOG_LOCAL2; 00243 else if (!strcasecmp(facility, "LOCAL3")) 00244 chan->facility = LOG_LOCAL3; 00245 else if (!strcasecmp(facility, "LOCAL4")) 00246 chan->facility = LOG_LOCAL4; 00247 else if (!strcasecmp(facility, "LOCAL5")) 00248 chan->facility = LOG_LOCAL5; 00249 else if (!strcasecmp(facility, "LOCAL6")) 00250 chan->facility = LOG_LOCAL6; 00251 else if (!strcasecmp(facility, "LOCAL7")) 00252 chan->facility = LOG_LOCAL7; 00253 #endif /* Solaris */ 00254 00255 if (0 > chan->facility) { 00256 fprintf(stderr, "Logger Warning: bad syslog facility in logger.conf\n"); 00257 free(chan); 00258 return NULL; 00259 } 00260 00261 chan->type = LOGTYPE_SYSLOG; 00262 snprintf(chan->filename, sizeof(chan->filename), "%s", channel); 00263 openlog("asterisk", LOG_PID, chan->facility); 00264 } else { 00265 if (channel[0] == '/') { 00266 if(!ast_strlen_zero(hostname)) { 00267 snprintf(chan->filename, sizeof(chan->filename) - 1,"%s.%s", channel, hostname); 00268 } else { 00269 ast_copy_string(chan->filename, channel, sizeof(chan->filename)); 00270 } 00271 } 00272 00273 if(!ast_strlen_zero(hostname)) { 00274 snprintf(chan->filename, sizeof(chan->filename), "%s/%s.%s",(char *)ast_config_AST_LOG_DIR, channel, hostname); 00275 } else { 00276 snprintf(chan->filename, sizeof(chan->filename), "%s/%s", (char *)ast_config_AST_LOG_DIR, channel); 00277 } 00278 chan->fileptr = fopen(chan->filename, "a"); 00279 if (!chan->fileptr) { 00280 /* Can't log here, since we're called with a lock */ 00281 fprintf(stderr, "Logger Warning: Unable to open log file '%s': %s\n", chan->filename, strerror(errno)); 00282 } 00283 chan->type = LOGTYPE_FILE; 00284 } 00285 chan->logmask = make_components(components, lineno); 00286 return chan; 00287 }
int reload_logger | ( | int | rotate | ) |
Definition at line 382 of file logger.c.
References ast_config_AST_LOG_DIR, AST_CONFIG_MAX_PATH, ast_log(), ast_mutex_lock(), ast_mutex_unlock(), ast_queue_log(), ast_verbose(), logchannel::disabled, EVENT_FLAG_SYSTEM, eventlog, EVENTLOG, logchannel::filename, logchannel::fileptr, filesize_reload_needed, init_logger_chain(), LOG_ERROR, LOG_EVENT, logchannels, logfiles, manager_event(), logchannel::next, option_verbose, qlog, and QUEUELOG.
Referenced by ast_log(), handle_logger_reload(), handle_logger_rotate(), and main().
00383 { 00384 char old[AST_CONFIG_MAX_PATH] = ""; 00385 char new[AST_CONFIG_MAX_PATH]; 00386 int event_rotate = rotate, queue_rotate = rotate; 00387 struct logchannel *f; 00388 FILE *myf; 00389 int x, res = 0; 00390 00391 ast_mutex_lock(&msglist_lock); /* to avoid deadlock */ 00392 ast_mutex_lock(&loglock); 00393 if (eventlog) 00394 fclose(eventlog); 00395 else 00396 event_rotate = 0; 00397 eventlog = NULL; 00398 00399 if (qlog) 00400 fclose(qlog); 00401 else 00402 queue_rotate = 0; 00403 qlog = NULL; 00404 00405 mkdir((char *)ast_config_AST_LOG_DIR, 0755); 00406 00407 f = logchannels; 00408 while(f) { 00409 if (f->disabled) { 00410 f->disabled = 0; /* Re-enable logging at reload */ 00411 manager_event(EVENT_FLAG_SYSTEM, "LogChannel", "Channel: %s\r\nEnabled: Yes\r\n", f->filename); 00412 } 00413 if (f->fileptr && (f->fileptr != stdout) && (f->fileptr != stderr)) { 00414 fclose(f->fileptr); /* Close file */ 00415 f->fileptr = NULL; 00416 if(rotate) { 00417 ast_copy_string(old, f->filename, sizeof(old)); 00418 00419 for(x=0;;x++) { 00420 snprintf(new, sizeof(new), "%s.%d", f->filename, x); 00421 myf = fopen((char *)new, "r"); 00422 if (myf) { 00423 fclose(myf); 00424 } else { 00425 break; 00426 } 00427 } 00428 00429 /* do it */ 00430 if (rename(old,new)) 00431 fprintf(stderr, "Unable to rename file '%s' to '%s'\n", old, new); 00432 } 00433 } 00434 f = f->next; 00435 } 00436 00437 filesize_reload_needed = 0; 00438 00439 init_logger_chain(); 00440 00441 if (logfiles.event_log) { 00442 snprintf(old, sizeof(old), "%s/%s", (char *)ast_config_AST_LOG_DIR, EVENTLOG); 00443 if (event_rotate) { 00444 for (x=0;;x++) { 00445 snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR, EVENTLOG,x); 00446 myf = fopen((char *)new, "r"); 00447 if (myf) /* File exists */ 00448 fclose(myf); 00449 else 00450 break; 00451 } 00452 00453 /* do it */ 00454 if (rename(old,new)) 00455 ast_log(LOG_ERROR, "Unable to rename file '%s' to '%s'\n", old, new); 00456 } 00457 00458 eventlog = fopen(old, "a"); 00459 if (eventlog) { 00460 ast_log(LOG_EVENT, "Restarted Asterisk Event Logger\n"); 00461 if (option_verbose) 00462 ast_verbose("Asterisk Event Logger restarted\n"); 00463 } else { 00464 ast_log(LOG_ERROR, "Unable to create event log: %s\n", strerror(errno)); 00465 res = -1; 00466 } 00467 } 00468 00469 if (logfiles.queue_log) { 00470 snprintf(old, sizeof(old), "%s/%s", (char *)ast_config_AST_LOG_DIR, QUEUELOG); 00471 if (queue_rotate) { 00472 for (x = 0; ; x++) { 00473 snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR, QUEUELOG, x); 00474 myf = fopen((char *)new, "r"); 00475 if (myf) /* File exists */ 00476 fclose(myf); 00477 else 00478 break; 00479 } 00480 00481 /* do it */ 00482 if (rename(old, new)) 00483 ast_log(LOG_ERROR, "Unable to rename file '%s' to '%s'\n", old, new); 00484 } 00485 00486 qlog = fopen(old, "a"); 00487 if (qlog) { 00488 ast_queue_log("NONE", "NONE", "NONE", "CONFIGRELOAD", "%s", ""); 00489 ast_log(LOG_EVENT, "Restarted Asterisk Queue Logger\n"); 00490 if (option_verbose) 00491 ast_verbose("Asterisk Queue Logger restarted\n"); 00492 } else { 00493 ast_log(LOG_ERROR, "Unable to create queue log: %s\n", strerror(errno)); 00494 res = -1; 00495 } 00496 } 00497 ast_mutex_unlock(&loglock); 00498 ast_mutex_unlock(&msglist_lock); 00499 00500 return res; 00501 }
char dateformat[256] = "%b %e %T" [static] |
Definition at line 79 of file logger.c.
Referenced by ast_log(), ast_verbose(), and init_logger_chain().
FILE* eventlog = NULL [static] |
Definition at line 118 of file logger.c.
Referenced by ast_log(), init_logger(), and reload_logger().
int filesize_reload_needed = 0 [static] |
Definition at line 83 of file logger.c.
Referenced by ast_log(), handle_SIGXFSZ(), and reload_logger().
int global_logmask = -1 [static] |
char hostname[MAXHOSTNAMELEN] [static] |
Definition at line 96 of file logger.c.
Referenced by ast_remotecontrol(), cli_prompt(), iax2_register(), init_logger_chain(), main(), make_logchannel(), netconsole(), set_destination(), and sip_register().
Referenced by arg_free(), ast_channel_free(), ast_channel_unregister(), ast_config_engine_deregister(), ast_db_freetree(), ast_db_gettree(), ast_sched_del(), ast_unregister_modem_driver(), ast_verbose(), close_logger(), config_odbc(), crypto_load(), directory_exec(), do_monitor(), load_password(), matches_label(), queue_frame_to_spies(), scan_thread(), schedule(), and try_firmware().
char* levels[] [static] |
struct logchannel* logchannels = NULL [static] |
Definition at line 114 of file logger.c.
Referenced by ast_log(), handle_logger_show_channels(), init_logger_chain(), and reload_logger().
struct { ... } logfiles [static] |
Referenced by ast_log(), init_logger(), init_logger_chain(), and reload_logger().
char logger_reload_help[] [static] |
char logger_rotate_help[] [static] |
struct ast_cli_entry logger_show_channels_cli [static] |
Initial value:
{ { "logger", "show", "channels", NULL }, handle_logger_show_channels, "List configured log channels", logger_show_channels_help }
Definition at line 581 of file logger.c.
Referenced by init_logger().
char logger_show_channels_help[] [static] |
int msgcnt = 0 [static] |
FILE* qlog = NULL [static] |
Definition at line 119 of file logger.c.
Referenced by ast_queue_log(), init_logger(), and reload_logger().
struct ast_cli_entry reload_logger_cli [static] |
Initial value:
{ { "logger", "reload", NULL }, handle_logger_reload, "Reopens the log files", logger_reload_help }
Definition at line 586 of file logger.c.
Referenced by init_logger().
struct ast_cli_entry rotate_logger_cli [static] |
Initial value:
{ { "logger", "rotate", NULL }, handle_logger_rotate, "Rotates and reopens the log files", logger_rotate_help }
Definition at line 591 of file logger.c.
Referenced by init_logger().
int syslog_level_map[] [static] |
struct verb * verboser [static] |
Referenced by ast_register_verbose(), ast_unregister_verbose(), ast_verbose(), exit_now(), and show_console().