1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
<?php
/* vim:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab: */
/**
*
* LICENSE: GNU General Public License, version 2 (GPLv2)
* Copyright 2001 - 2013 Ampache.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License v2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
/*
* 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 */
$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 */
$log_name = $log_name ? $log_name : 'ampache';
$username = $username ? $username : 'ampache';
$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) {
echo "Warning: Unable to write to log ($log_filename) Please check your log_path variable in ampache.cfg.php";
}
} // log_event
/*
* 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 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;
} // end switch
// 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 = 7;
}
}
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', $log_line, $level, '', 'ampache');
} // ampache_error_handler
/**
* debug_event
* This function is called inside ampache, it's actually a wrapper for the
* 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 = '') {
if (!Config::get('debug') || $level > Config::get('debug_level')) {
return false;
}
if (!$username && isset($GLOBALS['user'])) {
$username = $GLOBALS['user']->username;
}
log_event($username, $type, $message, $file);
} // debug_event
?>
|