Monolog基于框架的封装

做一下基本关于Monolog的基本介绍:

Monolog是基于PHP的日志类库。

介绍就到这,言归正传

安装

安装最新版本:(composer 还没安装的~:https://www.phpcomposer.com/)

composer require monolog/monolog

要求PHP版本为5.3以上。

以上都是百度都可以进行搜索的废话,这里咱们只是进行复制并且再废话一遍~

接下来的是重点:

=')) {
            $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 (!empty($backtrace[$idx + 1]['function'])) {
            $trace .= '##';
            $trace .= $backtrace[$idx + 1]['function'];
        }

        $message = sprintf('==> LOG: %s -- %s', $message, $trace);

        return $logger->addRecord($level, $message, $context);
    }

    /**
     * 创建日志
     * @param $name
     * @return mixed
     */
    private static function createLogger($name)
    {
        if (empty(self::$loggers[$name])) {
            // 根据业务域名与方法名进行日志名称的确定
            $category       = $_SERVER['SERVER_NAME'];
            // 日志文件目录
            $fileName       = self::$fileName;
            // 日志保存时间
            $maxFiles       = self::$maxFiles;
            // 日志等级
            $level          = self::$level;
            // 权限
            $filePermission = self::$filePermission;

            // 创建日志
            $logger    = new Logger($category);
            // 日志文件相关操作
            $handler   = new RotatingFileHandler("{$fileName}{$name}.log", $maxFiles, $level, true, $filePermission);
            // 日志格式
            $formatter = new LineFormatter("%datetime% %channel%:%level_name% %message% %context% %extra%\n", "Y-m-d H:i:s", false, true);

            $handler->setFormatter($formatter);
            $logger->pushHandler($handler);

            self::$loggers[$name] = $logger;
        }
        return self::$loggers[$name];
    }
}

只要把该文件放在项目的目录下,并且保证项目的路由没问题的时候,你就可以打印日志了。

打印有多简单呢,一行即可,还是可以随着你的自定义命名,进行服务器上的对应文件写入~

    /**
     * 如何使用log日志
     */
    public function actionUseLog()
    {
        // Log是静态方法 引入use common\log\Log;即可以调用
        // info是写入的方法名称,这里可以自定义,可以是任何文件名称,这里如果写入info 服务器看到的就是带 info-2019-01-01.log 的文件
        // 就是这么简单
        // 使用的时候在服务器新建/data/logs/monolog/ 路径的文件夹,并且给与0666以上读写权限即可
        Log::info('第一个字段是内容',['KEY'=>'VALUE']);
    }

你可能感兴趣的:(Monolog基于框架的封装)