imo-tikuwa/cakephp-operation-logs

CakePHP的OperationLogs插件

v2.1.0 2021-10-31 01:43 UTC

README

安装

您可以使用composer将此插件安装到您的CakePHP应用程序中。

安装composer包的推荐方法是

# for CakePHP4
composer require imo-tikuwa/cakephp-operation-logs "2.*"

# for CakePHP3
composer require imo-tikuwa/cakephp-operation-logs "1.*"

使用方法

将插件加载到bootstrap.php

// cakephp 3.6 or less
Plugin::load('OperationLogs', ['bootstrap' => true]);

// cakephp 3.7 or higher
Application::addPlugin('OperationLogs', ['bootstrap' => true]);

或Application.php

    public function bootstrap(): void
    {
        parent::bootstrap();

+        $this->addPlugin('OperationLogs', ['bootstrap' => true]);
    }

执行数据库表初始化命令。
※执行该命令将删除并创建operation_logs, operation_logs_hourly, operation_logs_daily, operation_logs_monthly表。
※如果您想记录到微秒级别,请指定--enable_micro选项。

cake init_operation_logs

将中间件追加到Application.php

use OperationLogs\Middleware\OperationLogsMiddleware;

    public function middleware($middlewareQueue)
    {
        $middlewareQueue
            // Add operation_logs middleware.
            ->add(new OperationLogsMiddleware([
                'exclude_urls' => [
                    '/debug-kit',
                    '/admin'
                ]
            ]))
            ;
        return $middlewareQueue;
    }

※如果您想记录所有请求而不使用选项,请将其替换为OperationLogsSimpleMiddleware中间件。

use OperationLogs\Middleware\OperationLogsSimpleMiddleware;

    public function middleware($middlewareQueue)
    {
        $middlewareQueue
            // Add operation_logs middleware.
            ->add(new OperationLogsSimpleMiddleware())
            ;
        return $middlewareQueue;
    }

选项。

※如果'mode'为'exclude',则忽略'include_〇〇'选项。(反之亦然)

在CakePHP4.3以上版本中执行PHPUnit测试的情况

CakePHP4.3执行的Fixture升级,在执行PHPUnit测试时需要加载schema文件。
以下操作可以将OperationLogs插件内包含的schema文件复制到应用程序的schema目录中:

composer require imo-tikuwa/cakephp-operation-logs "2.*"
composer run-script post-install-cmd --working-dir=vendor\imo-tikuwa\cakephp-operation-logs

数据摘要命令。

daily_summary命令、monthly_summary命令、hourly_summary命令。
基于operation_logs表的数据,根据客户端IP、用户代理、请求URL等进行分组,并收集数据。

daily_summary命令。

使用--target_ymd选项设置汇总日期。
未指定时,汇总前一天的日期。
数据将记录到operation_logs_daily表。

cake daily_summary --target_ymd=2020-02-13

monthly_summary命令。

使用--target_ym选项以6位数字设置汇总年月。
未指定时,汇总上一个月的数据。
数据将记录到operation_logs_monthly表。

cake monthly_summary --target_ym=202002

hourly_summary命令。

使用--target_ymd选项设置汇总日期。
未指定时,汇总前一天的日期。
按1小时为单位汇总数据。
数据将记录到operation_logs_hourly表。

cake hourly_summary --target_ymd=2020-02-13