<?php
// +----------------------------------------------------------------------
// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2023 https://www.yiovo.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 萤火科技 <admin@yiovo.com>
// +----------------------------------------------------------------------
declare (strict_types=1);

namespace app\common\library;

use think\facade\Log as LogFacade;

/**
 * 系统日志工具类
 * Class helper
 * @package app\common\library
 */
class Log
{
    // 日志内容
    private static array $data = [];

    /**
     * 写入日志
     * @param mixed $value
     * @param string $type
     */
    public static function record($value, string $type = 'info')
    {
        $content = is_string($value) ? $value : print_r($value, true);
        LogFacade::record($content, $type);
    }

    /**
     * 记录错误日志
     * @param $value
     * @return void
     */
    public static function error($value)
    {
        static::record($value, 'error');
    }

    /**
     * 写入日志 (使用追加的方式, 索引值是name)
     * @param string $name 日志记录名
     * @param array $data 记录内容
     */
    public static function append(string $name, array $data)
    {
        $merge = array_merge(compact('name'), $data);
        if (isset(static::$data[$name])) {
            $merge = array_merge(static::$data[$name], $merge);
        }
        static::$data[$name] = $merge;
    }

    /**
     * 在应用结束时将追加的日志数据写入到文件
     */
    public static function end()
    {
        foreach (static::$data as $name => $item) {
            static::record(array_merge(['name' => $name], $item));
        }
    }
}