Skip to content

日志、数据库与文档

Pin 提供结构化日志、SQL 查询监控、数据库配置、迁移增强和 Scramble 文档扩展。

日志通道

config/logging.php 默认定义:

php
'channels' => [
    'app' => Config::single('app'),
    'api' => Config::single('api'),
    'sql' => [
        ...Config::single('sql'),
        'ignores' => [],
    ],
],

Pin\Log\Config::single() 用于生成单文件 JSON 日志通道配置。

SQL 日志

php
'sql_logging' => env('LOG_SQL_ENABLED', ! $isProduction),
'sql_max_length' => env('LOG_SQL_MAX_LENGTH', 10240),

SQL 查询会被 QueryMonitor 归集,并可在 debug 响应中输出 sql_countsql_timesqls

API 响应日志

php
'response' => [
    'enabled' => env('LOG_RESPONSE_ENABLED', ! $isProduction),
    'except' => [],
    'ignore_response_data' => [
        CaptchaRoute::Generate->name(),
    ],
    'max_length' => env('LOG_RESPONSE_MAX_LENGTH', 10240),
    'include_request_payload' => env('LOG_RESPONSE_INCLUDE_REQUEST_PAYLOAD', ! $isProduction),
    'include_sql' => env('LOG_RESPONSE_INCLUDE_SQL', ! $isProduction),
    'slow_threshold' => env('LOG_RESPONSE_SLOW_THRESHOLD', 2),
],

slow_threshold 支持两种格式:

  • 小于等于 10:按秒处理。
  • 大于 10:按毫秒处理。

Stack Trace

php
'stack_trace' => [
    'enabled' => env('LOG_STACK_TRACT_ENABLED', false),
    'include_exceptions' => [],
    'exclude_exceptions' => [],
    'max_frames' => 10,
    'include_frames' => [],
    'exclude_frames' => [
        'Illuminate' => 'Illuminate',
    ],
],

可以通过 include / exclude 控制异常类型和调用帧范围。

数据库配置

默认数据库配置:

php
use Pin\Database\Config;
use Pin\Models\Model;

return [
    'connections' => [
        Model::CONNECTION_DEFAULT => Config::mysql(Model::CONNECTION_DEFAULT),
    ],
];

Model::CONNECTION_DEFAULT 的值是 default

迁移增强

MigrationServiceProvider 会替换 migration.creator,并提供发布标签:

bash
php artisan vendor:publish --tag=pin-migrations

迁移基类和辅助能力位于:

  • Pin\Database\Migration
  • Pin\Database\LoggingMigration
  • Pin\Database\Concerns\HasLoggingMigration
  • Pin\Database\Schema\Column
  • Pin\Database\Schema\Table
  • Pin\Database\Schema\Compiler
  • Pin\Database\Schema\Metadata

查询监控

相关对象:

说明
QueryMonitor查询监控入口
QueryProfile汇总查询数量和耗时
QueryResponse面向响应调试的 SQL 列表
QueryLoggerSQL 日志记录
QuerySqlSQL 与绑定参数格式化

ApiResponse 的 debug 输出会读取 QueryMonitor

Scramble 扩展

Scramble 相关类位于 Pin\Scramble

  • ScrambleServiceProvider
  • Created
  • Updated
  • Deleted
  • SelectOption
  • TypeToSchemaExtensions\ResponseTypeToSchema

它们用于 API 文档响应结构和常见操作结果的 schema 表达。