You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web/Sources/src/shared/Log.php

61 lines
1.9 KiB

<?php
namespace Shared;
class Log {
const INFO = 'INFO';
const WARNING = 'WARNING';
const ERROR = 'ERROR';
private static int $logCount = 0;
private static array $logs = [];
private static function getLogStyle(string $level): string {
return match ($level) {
self::WARNING => "background-color: #fff3cd; color: #856404; border-color: #ffeeba",
self::ERROR => "background-color: #f8d7da; color: #721c24; border-color: #f5c6cb",
default => "background-color: #f8f8f8; color: #383d41; border-color: #ccc",
};
}
private static function addLog($something, string $level, string $label): bool|string
{
$style = self::getLogStyle($level);
ob_start();
echo "<pre style='$style; padding: 10px;'>";
echo "<strong>$label [$level] (Log " . self::$logCount . ")</strong><br>";
var_dump($something);
echo "</pre>";
$logOutput = ob_get_clean();
self::$logs[] = ['level' => $level, 'output' => $logOutput];
return $logOutput;
}
public static function dd($something, string $label = "LOGGER", string $level = self::INFO) {
echo self::addLog($something, $level, $label);
die();
}
public static function ddArray(array $array, string $label = "LOGGER", string $level = self::INFO) {
self::dd($array, $label, $level);
}
public static function log($something, string $label = "LOGGER", string $level = self::INFO) {
self::$logCount++;
echo self::addLog($something, $level, $label);
}
public static function getLogCount(): int
{
return self::$logCount;
}
public static function getLogsByLevel(string $level): array
{
return array_filter(self::$logs, function($log) use ($level) {
return $log['level'] === $level;
});
}
}