diff options
-rw-r--r-- | lib/log.lib.php | 131 |
1 files changed, 68 insertions, 63 deletions
diff --git a/lib/log.lib.php b/lib/log.lib.php index 0b3e3587..e7cfa787 100644 --- a/lib/log.lib.php +++ b/lib/log.lib.php @@ -20,23 +20,25 @@ */ -/*! - @function log_event - @discussion logs an event either to a database - or to a defined log file based on config options -*/ -function log_event($username='Unknown',$event_name,$event_description,$log_name='ampache') { +/* + * log_event + * Logs an event to a defined log file based on config options + */ +function log_event($username, $event_name, $event_description, $log_name) { /* Set it up here to make sure it's _always_ the same */ - $log_time = time(); + $time = time(); + // Turn time into strings + $log_day = date('Ymd', $time); + $log_time = date('Y-m-d H:i:s', $time); /* must have some name */ - if (!strlen($log_name)) { $log_name = 'ampache'; } + $log_name = $log_name ? $log_name : 'ampache'; + $username = $username ? $username : 'ampache'; - $username = $username ? $username : 'ampache'; - - $log_filename = Config::get('log_path') . "/$log_name." . date("Ymd",$log_time) . ".log"; - $log_line = date("Y-m-d H:i:s",$log_time) . " [$username] ($event_name) -> $event_description \n"; + $log_filename = Config::get('log_path') . "/$log_name.$log_day.log"; + $log_line = "$log_time [$username] ($event_name) -> $event_description \n"; + // Do the deed $log_write = error_log($log_line, 3, $log_filename); if (!$log_write) { @@ -45,10 +47,10 @@ function log_event($username='Unknown',$event_name,$event_description,$log_name= } // log_event -/*! - @function ampache_error_handler - @discussion an error handler for ampache that traps - as many errors as it can and logs em +/* + * ampache_error_handler + * An error handler for ampache that traps as many errors as it can and logs + * them. */ function ampache_error_handler($errno, $errstr, $errfile, $errline) { @@ -56,60 +58,63 @@ function ampache_error_handler($errno, $errstr, $errfile, $errline) { $level = 1; switch ($errno) { - case '2': - $error_name = "Runtime Error"; - break; - case '128': - case '8': - case '32': - return true; - break; - case '1': - $error_name = "Fatal run-time Error"; - break; - case '4': - $error_name = "Parse Error"; - break; - case '16': - $error_name = "Fatal Core Error"; - break; - case '64': - $error_name = "Zend run-time Error"; - break; + case E_WARNING: + $error_name = 'Runtime Error'; + break; + case E_COMPILE_WARNING: + case E_NOTICE: + case E_CORE_WARNING: + $error_name = 'Warning'; + $level = 6; + break; + case E_ERROR: + $error_name = 'Fatal run-time Error'; + break; + case E_PARSE: + $error_name = 'Parse Error'; + break; + case E_CORE_ERROR: + $error_name = 'Fatal Core Error'; + break; + case E_COMPILE_ERROR: + $error_name = 'Zend run-time Error'; + break; + case E_STRICT: + $error_name = "Strict Error"; + break; default: $error_name = "Error"; $level = 2; - break; + break; } // end switch - - /* Don't log var: Deprecated we know shutup! - * Yea now getid3() spews errors I love it :( - */ - if (strstr($errstr,"var: Deprecated. Please use the public/private/protected modifiers") OR - strstr($errstr,"getimagesize() [") OR strstr($errstr,"Non-static method getid3") OR - strstr($errstr,"Assigning the return value of new by reference is deprecated")) { - return false; + // List of things that should only be displayed if they told us to turn + // on the firehose + $ignores = array( + // We know var is deprecated, shut up + 'var: Deprecated. Please use the public/private/protected modifiers', + // getid3 spews errors, yay! + 'getimagesize() [', + 'Non-static method getid3', + 'Assigning the return value of new by reference is deprecated', + // The XML-RPC lib is broken (kinda) + 'used as offset, casting to integer' + ); + + foreach($ignores as $ignore) { + if (strpos($errstr, $ignore) !== false) { + $error_name = 'Ignored ' . $error_name; + $level = 6; + } } - if (strstr($errstr,"date.timezone")) { - $error_name = "Warning"; - $errstr = "You have not set a valid timezone (date.timezone) in your php.ini file. This may cause display issues with dates. This warning is non-critical and not caused by Ampache."; - } - - /* The XML-RPC lib is broken, well kind of - * shut your pie hole - */ - if (strstr($errstr,"used as offset, casting to integer")) { - return false; + if (strpos($errstr,"date.timezone") !== false) { + $error_name = 'Warning'; + $errstr = 'You have not set a valid timezone (date.timezone) in your php.ini file. This may cause display issues with dates. This warning is non-critical and not caused by Ampache.'; } $log_line = "[$error_name] $errstr in file $errfile($errline)"; - debug_event('PHP Error',$log_line,$level); - - // When a dir is defined lets log it to a logfile - if (Config::get('log_path') != "") - log_event("ampache","PHP Error", $log_line); + debug_event('PHP', $log_line, $level, '', 'ampache'); } // ampache_error_handler @@ -119,17 +124,17 @@ function ampache_error_handler($errno, $errstr, $errfile, $errline) { * log_event. It checks for conf('debug') and conf('debug_level') and only * calls log event if both requirements are met. */ -function debug_event($type,$message,$level,$file='',$username='') { +function debug_event($type, $message, $level, $file = '', $username = '') { if (!Config::get('debug') || $level > Config::get('debug_level')) { return false; } - if (!$username) { + if (!$username && isset($GLOBALS['user'])) { $username = $GLOBALS['user']->username; } - log_event($username,$type,$message,$file); + log_event($username, $type, $message, $file); } // debug_event |