1<?php
2
3namespace AuthSSOCas;
4
5use Psr\Log\AbstractLogger;
6
7class SimpleFileLogger extends AbstractLogger
8{
9    private string $file;
10
11    public function __construct(string $file)
12    {
13        $this->file = $file;
14    }
15
16    public function log($level, $message, array $context = []): void
17    {
18        $line = sprintf(
19            "[%s] %s: %s\n",
20            date('Y-m-d H:i:s'),
21            strtoupper($level),
22            $this->interpolate($message, $context)
23        );
24        file_put_contents($this->file, $line, FILE_APPEND);
25    }
26
27    private function interpolate(string $message, array $context): string
28    {
29        foreach ($context as $key => $val) {
30            $message = str_replace("{{$key}}", $val, $message);
31        }
32        return $message;
33    }
34}
35