Files
lis/htdocs/vendor/arcanedev/log-viewer/src/LogViewer.php
T
2025-07-16 07:36:13 +07:00

365 lines
7.6 KiB
PHP

<?php
declare(strict_types=1);
namespace Arcanedev\LogViewer;
use Arcanedev\LogViewer\Contracts\Utilities\Filesystem as FilesystemContract;
use Arcanedev\LogViewer\Contracts\Utilities\Factory as FactoryContract;
use Arcanedev\LogViewer\Contracts\Utilities\LogLevels as LogLevelsContract;
use Arcanedev\LogViewer\Contracts\LogViewer as LogViewerContract;
/**
* Class LogViewer
*
* @author ARCANEDEV <arcanedev.maroc@gmail.com>
*/
class LogViewer implements LogViewerContract
{
/* -----------------------------------------------------------------
| Constants
| -----------------------------------------------------------------
*/
/**
* LogViewer Version
*/
const VERSION = '10.1.1';
/* -----------------------------------------------------------------
| Properties
| -----------------------------------------------------------------
*/
/**
* The factory instance.
*
* @var \Arcanedev\LogViewer\Contracts\Utilities\Factory
*/
protected $factory;
/**
* The filesystem instance.
*
* @var \Arcanedev\LogViewer\Contracts\Utilities\Filesystem
*/
protected $filesystem;
/**
* The log levels instance.
*
* @var \Arcanedev\LogViewer\Contracts\Utilities\LogLevels
*/
protected $levels;
/* -----------------------------------------------------------------
| Constructor
| -----------------------------------------------------------------
*/
/**
* Create a new instance.
*
* @param \Arcanedev\LogViewer\Contracts\Utilities\Factory $factory
* @param \Arcanedev\LogViewer\Contracts\Utilities\Filesystem $filesystem
* @param \Arcanedev\LogViewer\Contracts\Utilities\LogLevels $levels
*/
public function __construct(
FactoryContract $factory,
FilesystemContract $filesystem,
LogLevelsContract $levels
) {
$this->factory = $factory;
$this->filesystem = $filesystem;
$this->levels = $levels;
}
/* -----------------------------------------------------------------
| Getters & Setters
| -----------------------------------------------------------------
*/
/**
* Get the log levels.
*
* @param bool $flip
*
* @return array
*/
public function levels($flip = false)
{
return $this->levels->lists($flip);
}
/**
* Get the translated log levels.
*
* @param string|null $locale
*
* @return array
*/
public function levelsNames($locale = null)
{
return $this->levels->names($locale);
}
/**
* Set the log storage path.
*
* @param string $path
*
* @return self
*/
public function setPath($path)
{
$this->factory->setPath($path);
return $this;
}
/**
* Get the log pattern.
*
* @return string
*/
public function getPattern()
{
return $this->factory->getPattern();
}
/**
* Set the log pattern.
*
* @param string $date
* @param string $prefix
* @param string $extension
*
* @return self
*/
public function setPattern(
$prefix = FilesystemContract::PATTERN_PREFIX,
$date = FilesystemContract::PATTERN_DATE,
$extension = FilesystemContract::PATTERN_EXTENSION
) {
$this->factory->setPattern($prefix, $date, $extension);
return $this;
}
/* -----------------------------------------------------------------
| Main Methods
| -----------------------------------------------------------------
*/
/**
* Get all logs.
*
* @return \Arcanedev\LogViewer\Entities\LogCollection
*/
public function all()
{
return $this->factory->all();
}
/**
* Paginate all logs.
*
* @param int $perPage
*
* @return \Illuminate\Pagination\LengthAwarePaginator
*/
public function paginate($perPage = 30)
{
return $this->factory->paginate($perPage);
}
/**
* Get a log.
*
* @param string $date
*
* @return \Arcanedev\LogViewer\Entities\Log
*/
public function get($date)
{
return $this->factory->log($date);
}
/**
* Get the log entries.
*
* @param string $date
* @param string $level
*
* @return \Arcanedev\LogViewer\Entities\LogEntryCollection
*/
public function entries($date, $level = 'all')
{
return $this->factory->entries($date, $level);
}
/**
* Download a log file.
*
* @param string $date
* @param string|null $filename
* @param array $headers
*
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse
*/
public function download($date, $filename = null, $headers = [])
{
if (is_null($filename)) {
$filename = sprintf(
"%s{$date}.%s",
config('log-viewer.download.prefix', 'laravel-'),
config('log-viewer.download.extension', 'log')
);
}
$path = $this->filesystem->path($date);
return response()->download($path, $filename, $headers);
}
/**
* Get logs statistics.
*
* @return array
*/
public function stats()
{
return $this->factory->stats();
}
/**
* Get logs statistics table.
*
* @param string|null $locale
*
* @return \Arcanedev\LogViewer\Tables\StatsTable
*/
public function statsTable($locale = null)
{
return $this->factory->statsTable($locale);
}
/**
* Delete the log.
*
* @param string $date
*
* @return bool
*/
public function delete($date)
{
return $this->filesystem->delete($date);
}
/**
* Clear the log files.
*
* @return bool
*/
public function clear()
{
return $this->filesystem->clear();
}
/**
* Get all valid log files.
*
* @return array
*/
public function files()
{
return $this->filesystem->logs();
}
/**
* List the log files (only dates).
*
* @return array
*/
public function dates()
{
return $this->factory->dates();
}
/**
* Get logs count.
*
* @return int
*/
public function count()
{
return $this->factory->count();
}
/**
* Get entries total from all logs.
*
* @param string $level
*
* @return int
*/
public function total($level = 'all')
{
return $this->factory->total($level);
}
/**
* Get logs tree.
*
* @param bool $trans
*
* @return array
*/
public function tree($trans = false)
{
return $this->factory->tree($trans);
}
/**
* Get logs menu.
*
* @param bool $trans
*
* @return array
*/
public function menu($trans = true)
{
return $this->factory->menu($trans);
}
/* -----------------------------------------------------------------
| Check Methods
| -----------------------------------------------------------------
*/
/**
* Determine if the log folder is empty or not.
*
* @return bool
*/
public function isEmpty()
{
return $this->factory->isEmpty();
}
/* -----------------------------------------------------------------
| Other Methods
| -----------------------------------------------------------------
*/
/**
* Get the LogViewer version.
*
* @return string
*/
public function version()
{
return self::VERSION;
}
}