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