function traceLog($msg = '', $level = 0, $file = FALSE, $dbg = FALSE) { if (!$msg) { return; } $logLEvel = array('PHP Notice', 'PHP Warning', 'PHP Fatal error', 'PHP Critical'); $logLEvelMail = 2; if (!$dbg) { $dbg = debug_backtrace(); $dbg = $dbg[0]; } $message = is_array($msg) ? print_r($msg, true) : $msg; $xlevel = isset($logLEvel[$level]) ? $logLEvel[$level] : ''; $format = "[%date%] %xlevel%: %msg% in %file% on line %line% "; if ($level !== false) { $msg = str_replace(array('%date%', '%xlevel%', '%file%', '%line%', '%msg%'), array(date("d-M-Y H:i:s"), $xlevel, $dbg['file'], $dbg['line'], $message), $format); } else { $msg = $message; } $logFile = $file ? $file : LOGFILE_DEFAULT; $logFile = $file ? str_replace("%date%", date('Ymd'), $logFile) : str_replace("%date%", date(LOGFILE_DATEFORMAT), $logFile); $logFile = LOG_DIR . '/' . $logFile . '.log'; $fp = @fopen($logFile, "a"); if ($fp) { @fputs($fp, $msg . "\n"); fclose($fp); } if ($level >= $logLEvelMail && (APP_MODE == 'prod' || !APP_LOCAL_SERVER)) { $mmsg = "Warning System: " . __CONFIG_SITE_NAME . ' - ' . $xlevel . " \n\n"; $mmsg .= "Messaggio: " . $message . "\n\n"; $mmsg .= 'Hostname: ' . $_SERVER['HTTP_HOST'] . "\n"; $mmsg .= 'User agent: ' . $_SERVER['HTTP_USER_AGENT'] . "\n"; $mmsg .= 'Livello: ' . $xlevel . "\n"; $mmsg .= 'Data: ' . date('d/m/Y H:i:s') . "\n"; $q = getenv("QUERY_STRING"); if ($q) { $q = '?' . $q; } $mmsg .= 'Url: http://' . $_SERVER['HTTP_HOST'] . getenv("PATH_TRANSLATED") . getenv("SCRIPT_NAME") . $q . "\n"; $mmsg .= 'Method: ' . getenv("REQUEST_METHOD") . "\n"; $mmsg .= 'File: ' . $dbg['file'] . "\n"; $mmsg .= 'Line: ' . $dbg['line'] . "\n"; $mmsg .= 'IP: ' . getenv("REMOTE_ADDR") . "\n\n"; $mailer = new PHPMailer(); $mailer->thUrl = Th::getSiteUrl(); $mailer->thPath = __CONFIG_SITE_PATH; $mailer->From = __CONFIG_SITE_TECHNICAL_CONTACT; $mailer->FromName = __CONFIG_SITE_NAME; $mailer->Subject = "PHP ALERT: " . __CONFIG_SITE_NAME . " - " . $xlevel; $mailer->MsgHTML(nl2br($mmsg)); $mailer->AltBody = $mmsg; $mailer->AddAddress(__CONFIG_SITE_TECHNICAL_CONTACT); $res = $mailer->Send(); } }