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