shershon/base

常用的、基于 psr 的基础组件

1.0.0 2022-08-28 09:39 UTC

This package is auto-updated.

Last update: 2025-03-21 10:34:41 UTC


README

常用的基础组件:

  • 基于 psr、Monolog包 封装的日志包

2.安装

  • 配置composer.json
{
  "require-dev": {
    "shershon/base": "^1.0.0"
  },
  "config": {
    "secure-http": false
  },
  "repositories": [
    {
      "type": "git",
      "url": "https://github.com/shershon-php-package/base-component.git"
    }
  ]
}
  • composer require --ignore-platform-reqs shershon/base
  • rm -rf vendor/shershon/base/.git

3.更新包版本

  • composer require --ignore-platform-reqs shershon/base:1.0.0(替换成指定的版本)
  • rm -rf vendor/shershon/base/.git

4.使用

4.1 基本用法

  • 前期准备,设置常量。在框架入口或脚本入口添加请求id和开始时间

    define('INDEX_START', microtime(true));//基于计算耗时
    define('REQUEST_ID', 'PHP_' . uniqid(gethostname() . '_'));//用于追踪请求链路
    
  • 打印日志 $logger的的instance只需要初始化一次,一般放在ServiceProvider中初始化一次,后期只使用LogFacade门面类打印日志

    $config = [
        'file' => '/logs/test.log' //设置日志路径
    ];
    $logger = new Logger();
    $logger->setConfig($config);
    LogFacade::setInstance($logger);
    //日志不区分模块
    LogFacade::info('test', ['title' => 'this is test'])
    //日志区分模块,便于搜索
    LogFacade::info('module:message', ['title' => 'this is test'])

4.2 lumen/laravel 框架接入

  • 在public/index.php和artisan文件中增加常量
 define('INDEX_START', microtime(true));//基于计算耗时
 define('REQUEST_ID', 'PHP_' . uniqid(gethostname() . '_'));//用于追踪请求链路
  • 在AppServiceProvider的boot方法初始化日志服务, .env配置日志文件路径
<?php

namespace App\Providers;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
use Shershon\Base\Logger\LogFacade;
use Shershon\Base\Logger\LogFacadeFacade;
use Shershon\Base\Logger\LogFacadeger;

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
        //
    }

    public function boot()
    {
        //配置日志服务
        $config = [
            'file' => env('LOG_FILE', '/tmp/test.log'), //设置日志路径
            'level' => env('LOG_LEVEL', 'DEBUG'),
        ];
        if (class_exists("Shershon\Base\Logger\LogFacade")) {
            $logger = new Logger();
            $logger->setConfig($config);
            LogFacade::setInstance($logger);
        }
    }
}
  • 在需要打日志的地方使用 LogFacade日志门面类打印日志即可
   LogFacade::info('module:message', ['title' => 'this is test'])

4.3 thinkphp6.0 框架接入(有service概念)

  • 在public/index.php(每个不同的应用入口)和think文件中增加常量
 define('INDEX_START', microtime(true));//基于计算耗时
 define('REQUEST_ID', 'PHP_' . uniqid(gethostname() . '_'));//用于追踪请求链路
  • 在AppService的boot方法初始化日志服务,.env配置配置日志文件路径
class AppService extends Service
{
    public function register()
    {
        // 服务注册
    }

    public function boot()
    {
        // 服务启动
        //配置日志服务
        $config = [
            'file' => env('log.path', '/logs').'/test.log' //设置日志路径
        ];
        if (class_exists("Shershon\Base\Logger\LogFacade")) {
            $logger = new Logger();
            $logger->setConfig($config);
            LogFacade::setInstance($logger);
        }
    }
}
  • 在需要打日志的地方使用 LogFacade日志门面类打印日志即可
   LogFacade::info('module:message', ['title' => 'this is test'])