*/ class implementation_file implements interface_output { /** * @var string * @author Christian Fraß */ protected $path; /** * @var boolean */ protected $human_readable; /** * @param int $level_threshold * @author Christian Fraß */ public function __construct( string $path, array $options = [] ) { $options = \array_merge( [ 'human_readable' => false, ], $options ); $this->path = $path; $this->human_readable = $options['human_readable']; } /** * @implementation * @author Christian Fraß */ public function process( int $level, \alveolata\report\struct_report $report ) : void { $content = ( $this->human_readable ? \alveolata\string\coin( ( empty($report->details) ? "<{{datetime}}> [{{level}}] {{incident}}\n" : "<{{datetime}}> [{{level}}] {{incident}} | {{details}}\n" ), [ 'datetime' => date('Y-m-d|H:i:s', $report->timestamp), 'level' => output_translate_level($level), 'incident' => $report->incident, 'details' => \alveolata\json\encode($report->details), ] ) : ( \alveolata\json\encode( [ 'timestamp' => $report->timestamp, 'datetime' => date('c', $report->timestamp), 'level_value' => $level, 'level_name' => output_translate_level($level), 'incident' => $report->incident, 'details' => $report->details, ] ) . "\n" ) ); file_put_contents( $this->path, $content, FILE_APPEND ); } } ?>