/** * Logs a message to the configured logging system * * This function is designed to handle logging for the cacti system. * * @param string $message the message your would like to log * @param int $severity the severity you would like to log at, check logging constants for values, Default = CACTI_LOG_SEV_INFO * @param int $facility the facility you would like to log in, check logging constants for values. Default = CACTI_LOG_FAC_SYSTEM * @return bool true */ function log_insert ($message, $severity = CACTI_LOG_SEV_INFO, $facility = CACTI_LOG_FAC_SYSTEM, $parameters = array() ) { global $cnn_id; /* setup parameters array */ $parameters = array ( "" => "", ); /* fill in the current date for printing in the log */ $logdate = date("Y-m-d H:i:s"); /* Get variables */ $log_severity = log_read_config_option("log_severity"); /* get username */ if ($severity == CACTI_LOG_SEV_DEV) { $username = "******"; }else{ if (isset($_SESSION["sess_user_id"])) { # --> FIX ME FOR NEW AUTH SYSTEM <-- #$user_info = user_info(array("id" => $_SESSION["sess_user_id"])); #$username = $user_info["username"]; $username = "******"; }else{ $username = "******"; } } /* set the IP Address */ if (isset($_SERVER["REMOTE_ADDR"])) { $source = $_SERVER["REMOTE_ADDR"]; }else { $source = "0.0.0.0"; } /* Format message for developer if CACTI_LOG_SEV_DEV is allowed */ if (($severity >= $log_severity) && ($severity == CACTI_LOG_SEV_DEV)) { /* get a backtrace so we can derive the current filename/line#/function */ $backtrace = debug_backtrace(); if (sizeof($backtrace) == 1) { $function_name = $backtrace[0]["function"]; $filename = $backtrace[0]["file"]; $line_number = $backtrace[0]["line"]; } else { $function_name = $backtrace[1]["function"]; $filename = $backtrace[0]["file"]; $line_number = $backtrace[0]["line"]; } $message = str_replace(CACTI_BASE_PATH, "", $filename) . ":$line_number in " . ($function_name == "" ? "main" : $function_name) . "(): $message"; } /* Log to Cacti System Log */ if ((log_read_config_option("log_dest_cacti") == CHECKED) && (log_read_config_option("log_status") != "suspended") && ($severity >= $log_severity)) { $sql = "insert into log (logdate,facility,severity,poller_id,device_id,username,source,plugin,message) values (SYSDATE(), " . $facility . "," . $severity . "," . $poller_id . "," .$device_id . ",'" . $username . "','" . $source . "','" . $plugin . "','". sql_sanitize($message) . "');"; /* DO NOT USE db_execute, function looping can occur when in CACTI_LOG_SEV_DEV mode */ $cnn_id->Execute($sql); } /* Log to System Syslog/Eventlog */ /* Syslog is currently Unstable in Win32 */ if ((log_read_config_option("log_dest_system") == CHECKED) && ($severity >= $log_severity)) { openlog("cacti", LOG_NDELAY | LOG_PID, log_read_config_option("log_system_facility")); syslog(log_get_system_severity($severity), log_get_severity($severity) . ": " . log_get_facility($facility) . ": " . $message); closelog(); } /* Log to Syslog Server */ if ((log_read_config_option("log_dest_syslog") == CHECKED) && ($severity >= $log_severity)) { log_save_syslog(log_read_config_option("log_syslog_server"), log_read_config_option("log_syslog_port"), log_read_config_option("log_syslog_facility"), log_get_severity_syslog($severity), log_get_severity($severity) . ": " . log_get_facility($facility) . ": " . $message); } /* print output to standard out if required, only for use in command line scripts */ if (($output == true) && ($severity >= $log_severity)) { print $logdate . " - " . log_get_severity($severity) . ": " . log_get_facility($facility) . ": " . $message . "\n"; } return true; }
function export_logs() { /* search field: filter (searchs device description and hostname) */ $filter_array = array(); if (isset_get_var("search_filter")) { $filter_array["message"] = get_get_var("search_filter"); } if (isset_get_var("search_facility")) { $filter_array["facility"] = get_get_var("search_facility"); } if (isset_get_var("search_severity")) { $filter_array["severity"] = get_get_var("search_severity"); } if (isset_get_var("search_poller")) { $filter_array["poller_id"] = get_get_var("search_poller"); } if (isset_get_var("search_host")) { $filter_array["host_id"] = get_get_var("search_host"); } if (isset_get_var("search_plugin")) { $filter_array["plugin"] = get_get_var("search_plugin"); } if (isset_get_var("search_username")) { $filter_array["username"] = get_get_var("search_username"); } if (isset_get_var("search_source")) { $filter_array["source"] = get_get_var("search_source"); } /* Search and Replace chars */ $search = array("\"","\t","\n","\r"); $replace = array(""," "," "," "); /* get log entires */ $logs = log_list($filter_array); /* Output CSV */ header("Content-type: text/plain"); header("Content-Disposition: attachment; filename=cacti_system_log." . date("Ymd.Hms") . ".csv"); print "\"" . _("Date") . "\","; print "\"" . _("Facility") . "\","; print "\"" . _("Severity") . "\","; print "\"" . _("Poller") . "\","; print "\"" . _("Host") . "\","; print "\"" . _("Plugin") . "\","; print "\"" . _("User") . "\","; print "\"" . _("Source") . "\","; print "\"" . _("Message") . "\"\n"; $i = 0; if ((is_array($logs)) && (sizeof($logs) > 0)) { foreach ($logs as $log) { print "\"" . $log["logdate"] . "\","; print "\"" . log_get_facility($log["facility"]) . "\","; print "\"" . log_get_severity($log["severity"]) . "\","; print "\""; if ($log["poller_name"] == "") { print "SYSTEM"; }else{ print $log["poller_name"]; } print "\",\""; if ($log["host"] == "") { print "SYSTEM"; }else{ print $log["host"]; } print "\",\""; if ($log["plugin"] == "") { print "N/A"; }else{ print $log["plugin"]; } print "\",\""; if ($log["username"] == "") { print "SYSTEM"; }else{ print $log["username"]; } print "\",\""; if ($log["source"] == "") { print "SYSTEM"; }else{ print $log["source"]; } print "\",\"" . str_replace($search,$replace,$log["message"]) . "\"\n"; } } }