aboutsummaryrefslogtreecommitdiffhomepage
path: root/Digitigrade/Logger.php
diff options
context:
space:
mode:
authorwinter2024-12-14 16:26:30 +0000
committerwinter2024-12-14 16:26:30 +0000
commit4dc9d1a481417bb78606996fa75c791bb646f44f (patch)
tree1e5c1beff234999a0a0eb9819515644ec73d965d /Digitigrade/Logger.php
parent86cf52e8d2701e13bd9fd4c847b35eba7506c473 (diff)
job queue and workers and loggers!
Diffstat (limited to 'Digitigrade/Logger.php')
-rw-r--r--Digitigrade/Logger.php52
1 files changed, 52 insertions, 0 deletions
diff --git a/Digitigrade/Logger.php b/Digitigrade/Logger.php
new file mode 100644
index 0000000..2a87c21
--- /dev/null
+++ b/Digitigrade/Logger.php
@@ -0,0 +1,52 @@
+<?php
+namespace Digitigrade;
+
+class Logger extends Singleton {
+ // TODO: implement different logging methods
+
+ public const LEVEL_DEBUG = 0;
+ public const LEVEL_INFO = 1;
+ public const LEVEL_WARNING = 2;
+ public const LEVEL_ERROR = 3;
+
+ private const TIME_FORMAT = 'Y-m-d H:i:s.v';
+
+ private int $minLevel = self::LEVEL_INFO;
+
+
+ public function setMinimumLevel(int $level) {
+ $this->minLevel = $level;
+ }
+
+ private function log(string $message, int $level) {
+ if ($level < $this->minLevel)
+ return;
+ $timestamp = (new \DateTimeImmutable())->format(self::TIME_FORMAT);#
+ $levelName = match ($level) {
+ self::LEVEL_DEBUG => 'DBG',
+ self::LEVEL_INFO => 'INF',
+ self::LEVEL_WARNING => 'WRN',
+ self::LEVEL_ERROR => 'ERR',
+ default => '???'
+ };
+
+ // TODO: don't hardcode this method
+ error_log("[$timestamp] $levelName: $message");
+ }
+
+ public function debug(string $message) {
+ $this->log($message, self::LEVEL_DEBUG);
+ }
+
+ public function info(string $message) {
+ $this->log($message, self::LEVEL_INFO);
+ }
+
+ public function warning(string $message) {
+ $this->log($message, self::LEVEL_WARNING);
+ }
+
+ public function error(string $message) {
+ $this->log($message, self::LEVEL_ERROR);
+ }
+} \ No newline at end of file