75 lines
1.3 KiB
PHP
75 lines
1.3 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;
|
|
}
|
|
}
|
|
|