<?php
namespace com\whitemagicsoftware;
require "swift/swift_required.php";
use Swift_SmtpTransport;
use Swift_Mailer;
use Swift_Message;
class Logger {
public function __construct() {
}
public static function init() {
error_reporting( E_ALL );
ini_set( "display_errors", 0 );
ini_set( "html_errors", 0 );
ini_set( "expose_php", 0 );
ini_set( "magic_quotes_gpc", 0 );
ini_set( "ignore_repeated_errors", 1 );
ini_set( "ignore_repeated_source", 1 );
ini_set( "log_errors", 1 );
ini_set( "error_log", "/tmp/php.log" );
}
public static function error( $message, $errfile, $errline ) {
$e = Logger::format( 0, $message, $errfile, $errline );
Logger::mail( $e );
Logger::log( $e );
}
public static function log( $message ) {
error_log( $message );
}
public static function handle( $errno, $errstr, $errfile, $errline ) {
Logger::mail(
Logger::format( $errno, $errstr, $errfile, $errline ) );
}
public static function format( $errno, $errstr, $errfile, $errline ) {
$trace = print_r( debug_backtrace( false ), true );
$content = "<table><thead bgcolor='#c8c8c8'><th>Item</th><th>Description</th></thead><tbody>";
$content .= "<tr valign='top'><td><b>Error</b></td><td><pre>$errstr</pre></td></tr>";
$content .= "<tr valign='top'><td><b>Errno</b></td><td><pre>$errno</pre></td></tr>";
$content .= "<tr valign='top'><td><b>File</b></td><td>$errfile</td></tr>";
$content .= "<tr valign='top'><td><b>Line</b></td><td>$errline</td></tr>";
$content .= "<tr valign='top'><td><b>Trace</b></td><td><pre>$trace</pre></td></tr>";
$content .= '</tbody></table>';
return $content;
}
public static function mail( $content, $redirect = true ) {
global $BASE_APP;
global $DEFAULT_APP_TITLE;
global $DEFAULT_EMAIL_TO;
global $DEFAULT_EMAIL_FROM;
global $DEFAULT_EMAIL_NAME;
global $SERVER_EMAIL_HOST;
global $SERVER_EMAIL_PORT;
$transport = Swift_SmtpTransport::newInstance(
$SERVER_EMAIL_HOST, $SERVER_EMAIL_PORT );
$mailer = Swift_Mailer::newInstance( $transport );
$message = Swift_Message::newInstance()
->setSubject( "$DEFAULT_APP_TITLE - Error" )
->setFrom( array( $DEFAULT_EMAIL_FROM => $DEFAULT_APP_TITLE ) )
->setTo( array( $DEFAULT_EMAIL_TO => $DEFAULT_EMAIL_NAME ) )
->setPriority( 1 )
->setBody( $content, 'text/html' );
if( $redirect ) {
header( "Location: $BASE_APP" );
}
}
public static function curl( $errline, $curl ) {
$errno = curl_errno( $curl );
if( $errno ) {
global $SERVICE_NLP;
$errstr = curl_error( $curl ) . "\n$SERVICE_NLP";
Logger::mail(
Logger::format( $errno, $errstr, __FILE__, $errline ), false );
}
}
private static function fatal() {
$error = error_get_last();
$errno = E_CORE_ERROR;
$errstr = "shutdown";
$errfile = "unknown file";
$errline = 0;
if( $error ) {
$errno = $error["type"];
$errstr = $error["message"];
$errfile = $error["file"];
$errline = $error["line"];
}
Logger::handle( $errno, $errstr, $errfile, $errline );
}
}
Logger::init();