MOON
Server: Apache
System: Linux server1.studioinfinity.com.br 2.6.32-954.3.5.lve1.4.90.el6.x86_64 #1 SMP Tue Feb 21 12:26:30 UTC 2023 x86_64
User: artinside (517)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/artinside/sites.artinside.com.br/mainpro/vendor/aplus/log/src/Log.php
<?php declare(strict_types=1);
/*
 * This file is part of Aplus Framework Log Library.
 *
 * (c) Natan Felles <natanfelles@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Framework\Log;

/**
 * Class Log.
 *
 * @package log
 */
class Log implements \Stringable
{
    public readonly LogLevel $level;
    public readonly string $message;
    public readonly int $time;
    public readonly string $id;

    public function __construct(LogLevel $level, string $message, int $time, string $id)
    {
        $this->level = $level;
        $this->message = $this->sanitizeMessage($message);
        $this->time = $time;
        $this->id = $id;
    }

    public function __toString() : string
    {
        return \implode(' ', [
            \date('Y-m-d H:i:s', $this->time),
            $this->level->name,
            $this->id,
            $this->message,
        ]);
    }

    protected function sanitizeMessage(string $message) : string
    {
        $message = \explode(\PHP_EOL, $message);
        $lines = [];
        foreach ($message as $line) {
            $line = \trim($line);
            if ($line !== '') {
                $lines[] = $line;
            }
        }
        return \implode(\PHP_EOL, $lines);
    }
}