Skip to content

Commit

Permalink
Logging. Use constants instead of numeric values in the switch, bump
Browse files Browse the repository at this point in the history
notices, warnings, and ignored messages to level 6 instead of ignoring them
completely.
  • Loading branch information
flowerysong committed Jun 13, 2010
1 parent dc495ea commit 93f4a26
Showing 1 changed file with 68 additions and 63 deletions.
131 changes: 68 additions & 63 deletions lib/log.lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -45,71 +47,74 @@ 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) {

/* Default level of 1 */
$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

Expand All @@ -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

Expand Down

0 comments on commit 93f4a26

Please sign in to comment.