monolog封装
做一下基本关于Monolog的基本介绍:
Monolog是基于PHP的日志类库。
介绍就到这,言归正传
安装
安装最新版本:(composer 还没安装的~:https://www.phpcomposer.com/)
composer require monolog/monolog
要求PHP版本为5.3以上。
以上都是百度都可以进行搜索的废话,这里咱们只是进行复制并且再废话一遍~
接下来的是重点:
<?php
/**
 * Created by PhpStorm.
 * User: j
 * Date: 2019-01-09
 * Time: 15:33
 */
namespace common\log;
use Monolog\Formatter\LineFormatter;
use Monolog\Logger;
use Monolog\Handler\RotatingFileHandler;
class Log
{
    private static $loggers;
    /**
     * 日志默认保存路径
     * @var string
     */
    private static $fileName = '/data/logs/monolog/';
    /**
     * 日志留存时间
     * @var int
     */
    private static $maxFiles = 31;
    /**
     * 日志等级
     * @var int
     */
    private static $level = Logger::DEBUG;
    /**
     * 文件读写权限分配
     * 0666 保证log日志文件可以被其他用户/进程读写
     * @var int
     */
    private static $filePermission = 0666;
    /**
     * monolog日志
     * @param $name
     * @param $arguments
     * @return mixed
     */
    public static function __callStatic($name, $arguments)
    {
        $logger = self::createLogger($name);
        $message         = empty($arguments[0]) ? ''    : $arguments[0];
        $context         = empty($arguments[1]) ? []    : $arguments[1];
        $levelName       = empty($arguments[2]) ? $name : $arguments[2];
        $backtraceOffset = empty($arguments[3]) ? 0     : intval($arguments[3]);
        $level = Logger::toMonologLevel($levelName);
        if (!is_int($level)) $level = Logger::INFO;
        // $backtrace数组第$idx元素是当前行,第$idx+1元素表示上一层,另外function、class需再往上取一个层次
        // PHP7 不会包含'call_user_func'与'call_user_func_array',需减少一层
        if (version_compare(PCRE_VERSION, '7.0.0', '>=')) {
            $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
            $idx       = 0 + $backtraceOffset;
        } else {
            $backtrace = debug_backtrace();
            $idx       = 1 + $backtraceOffset;
        }
        $trace = basename($backtrace[$idx]['file']) . ":" . $backtrace[$idx]['line'];
        if (!