| 
<?php
 namespace JLaso\SimpleLogger;
 
 class PlainFileLogger extends BaseLogger
 {
 use SingletonTrait;
 
 /**
 * @param string $level
 * @param mixed $data
 */
 public static function log($level, $data)
 {
 $instance = static::getInstance();
 
 if($instance->isLevel($level)) {
 
 file_put_contents(
 $instance->logFile,
 $instance->encodeLine($level, $data),
 FILE_APPEND
 );
 }
 }
 
 public function encodeLine($level, $data)
 {
 $data = is_scalar($data) ? (string)$data : json_encode($data);
 $date = date("Y-m-d h:i:s");
 
 return sprintf("*%'*-10s*[@%s]*: %s\n", "[ {$level} ]", $date, $data);
 }
 
 /**
 * @param string $line
 * @return array
 */
 public function decodeLine($line)
 {
 if(preg_match("/\*\[\s(?<level>\w+)\s\]\*+\[@(?<date>\d{4}\-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\]\*:\s(?<text>.*)$/i", $line, $matches)){
 return array(
 'level' => $matches['level'],
 'date' => $matches['date'],
 'text' => $matches['text'],
 );
 }
 }
 
 }
 |