40 lines
No EOL
1.3 KiB
PHP
40 lines
No EOL
1.3 KiB
PHP
<?php
|
|
class Logger {
|
|
const INFO = "INFO";
|
|
const WARNING = "WARNING";
|
|
const ERROR = "ERROR";
|
|
const DEBUG = "DEBUG";
|
|
const IOREAD = "IOREAD";
|
|
const IOWRITE = "IOWRITE";
|
|
const METRICS = "METRICS";
|
|
|
|
public static function getColor(string $level):string {
|
|
match ($level) {
|
|
self::INFO => $levelColor = "\033[0;32m",
|
|
self::WARNING => $levelColor = "\033[0;33m",
|
|
self::ERROR => $levelColor = "\033[0;31m",
|
|
self::DEBUG => $levelColor = "\033[0;34m",
|
|
self::IOREAD => $levelColor = "\033[0;35m",
|
|
self::IOWRITE => $levelColor = "\033[0;36m",
|
|
self::METRICS => $levelColor = "\033[0;41m",
|
|
default => $levelColor = "\033[0;37m"
|
|
};
|
|
|
|
return $levelColor;
|
|
}
|
|
|
|
public static function log(string $message, string $level = "INFO", string $context = "") {
|
|
|
|
$db = new Database();
|
|
$stmt = $db::$handle->prepare("INSERT INTO `logs` (`level`, `message`, `context`, `created`) VALUES (:level, :message, :context, strftime('%Y-%m-%d %H:%M:%S','now'))");
|
|
$stmt->bindValue(":level", $level, SQLITE3_TEXT);
|
|
$stmt->bindValue(":message", $message, SQLITE3_TEXT);
|
|
$stmt->bindValue(":context", $context, SQLITE3_TEXT);
|
|
|
|
@$stmt->execute();
|
|
|
|
$levelColor = self::getColor($level);
|
|
|
|
echo "\033[0;37m[" . date("Y-m-d H:i:s") . "] " . $levelColor . $level . "\033[0;37m: " . $message . "\033[0m" . PHP_EOL;
|
|
}
|
|
} |