102 lines
1.9 KiB
PHP
102 lines
1.9 KiB
PHP
<?php
|
|
|
|
require_once 'Utils.php';
|
|
|
|
interface ILogger
|
|
{
|
|
public function proclog($text);
|
|
}
|
|
|
|
class FileLogger implements ILogger
|
|
{
|
|
/** @var string $path */
|
|
private $path;
|
|
|
|
/**
|
|
* @var string $filename
|
|
* @var int $count
|
|
*/
|
|
public function __construct($filename, $count)
|
|
{
|
|
for ($i=$count-1;$i>0;$i--)
|
|
{
|
|
$f2 = Utils::sharpFormat($filename, [ 'num' => '_'.( $i ) ]);
|
|
$f1 = Utils::sharpFormat($filename, [ 'num' => '_'.( $i-1 ) ]);
|
|
if ($i-1 === 0) $f1 = Utils::sharpFormat($filename, [ 'num' => '' ]);
|
|
|
|
if (file_exists($f2)) @unlink($f2);
|
|
if (file_exists($f1)) @rename($f1, $f2);
|
|
}
|
|
|
|
|
|
$f0 = Utils::sharpFormat($filename, ['num'=>'' ]);
|
|
if (file_exists($f0)) @unlink($f0);
|
|
$this->path = $f0;
|
|
}
|
|
|
|
public function proclog($text)
|
|
{
|
|
if ($text !== '') $text = '[' . date('H:i:s') . '] ' . $text;
|
|
|
|
file_put_contents($this->path, $text . PHP_EOL , FILE_APPEND | LOCK_EX);
|
|
}
|
|
}
|
|
|
|
class SingleFileLogger implements ILogger
|
|
{
|
|
/** @var string $path */
|
|
private $path;
|
|
|
|
/**
|
|
* @var string $filename
|
|
*/
|
|
public function __construct($filename)
|
|
{
|
|
$this->path = $filename;
|
|
file_put_contents($this->path, '');
|
|
}
|
|
|
|
public function proclog($text)
|
|
{
|
|
file_put_contents($this->path, $text . PHP_EOL , FILE_APPEND | LOCK_EX);
|
|
}
|
|
}
|
|
|
|
class SessionLogger implements ILogger
|
|
{
|
|
/** @var string $sessionvar */
|
|
private $sessionvar;
|
|
|
|
/** @var string $sessionvar */
|
|
public function __construct($sessionvar)
|
|
{
|
|
$this->sessionvar = $sessionvar;
|
|
|
|
if (session_status() !== PHP_SESSION_DISABLED)
|
|
{
|
|
if (session_status() !== PHP_SESSION_ACTIVE) session_start();
|
|
$_SESSION[$sessionvar] = '';
|
|
session_commit();
|
|
}
|
|
}
|
|
|
|
public function proclog($text)
|
|
{
|
|
if (session_status() === PHP_SESSION_DISABLED) return;
|
|
|
|
$_SESSION[$this->sessionvar] .= $text . "\n";
|
|
session_commit();
|
|
}
|
|
}
|
|
|
|
class OutputLogger implements ILogger
|
|
{
|
|
public function proclog($text)
|
|
{
|
|
if ($text !== '') $text = '[' . date('H:i:s') . '] ' . $text;
|
|
|
|
print $text;
|
|
print "\n";
|
|
}
|
|
|
|
} |