69 lines
1.2 KiB
PHP
69 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Vn\Lib;
|
|
|
|
class Log {
|
|
private static $fd = NULL;
|
|
private static $count;
|
|
private static $file;
|
|
|
|
static function init($file) {
|
|
self::close();
|
|
self::$file = $file;
|
|
self::$fd = fopen($file, 'a');
|
|
self::rename();
|
|
set_error_handler('Vn\Lib\Log::phpHandler', E_ALL);
|
|
}
|
|
|
|
static function phpHandler($no, $str, $file, $line, $context) {
|
|
self::write('PHP: %s:%d: %s', $file, $line, $str);
|
|
|
|
switch ($no) {
|
|
case E_ERROR:
|
|
case E_PARSE:
|
|
case E_CORE_ERROR:
|
|
case E_COMPILE_ERROR:
|
|
self::write('PHP: Could not continue, exiting.');
|
|
self::close();
|
|
exit(1);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
static function close() {
|
|
if (self::$fd != NULL) {
|
|
fclose(self::$fd);
|
|
self::$fd = NULL;
|
|
}
|
|
}
|
|
|
|
static function write() {
|
|
if (self::$fd == NULL)
|
|
return;
|
|
|
|
if (self::$count > 5000)
|
|
self::rename();
|
|
|
|
self::$count += fprintf(self::$fd, "%s: %s\n"
|
|
,strftime('%Y-%m-%d %T')
|
|
,call_user_func_array('sprintf', func_get_args())
|
|
);
|
|
}
|
|
|
|
static private function rename() {
|
|
if (filesize(self::$file) > 1000000) {
|
|
self::close();
|
|
$rename = self::$file.'.1';
|
|
|
|
if (file_exists($rename))
|
|
unlink($rename);
|
|
|
|
rename(self::$file, $rename);
|
|
self::$fd = fopen($file, 'a');
|
|
}
|
|
|
|
self::$count = 0;
|
|
}
|
|
}
|