utopia-php/logger

Utopia Logger 库是一个简单且轻量级的日志信息库,例如错误或警告。该库的目标是尽可能简单、易于学习和使用。

0.6.1 2024-09-20 14:02 UTC

README

Build Status Total Downloads Discord

Utopia Logger 库是一个简单且轻量级的日志信息库,例如错误或警告。该库的目标是尽可能简单、易于学习和使用。该库由 Appwrite 团队 维护。

尽管该库是为 Utopia 框架 项目构建的,但它完全独立,无依赖,可以与任何其他 PHP 项目或框架一起使用。

入门指南

使用 composer 安装

composer require utopia-php/logger
<?php

require_once '../vendor/autoload.php';

use Utopia\Logger\Adapter\AppSignal;
use Utopia\Logger\Adapter\Raygun;
use Utopia\Logger\Adapter\Sentry;
use Utopia\Logger\Adapter\LogOwl;
use Utopia\Logger\Log;
use Utopia\Logger\Log\Breadcrumb;
use Utopia\Logger\Log\User;
use Utopia\Logger\Logger;

// Prepare log
$log = new Log();
$log->setAction("controller.database.deleteDocument");
$log->setEnvironment("production");
$log->setNamespace("api");
$log->setServer("digitalocean-us-001");
$log->setType(Log::TYPE_WARNING);
$log->setVersion("0.11.5");
$log->setMessage("Document efgh5678 not found");
$log->setUser(new User("efgh5678"));
$log->addBreadcrumb(new Breadcrumb(Log::TYPE_DEBUG, "http", "DELETE /api/v1/database/abcd1234/efgh5678", \microtime(true) - 500));
$log->addBreadcrumb(new Breadcrumb(Log::TYPE_DEBUG, "auth", "Using API key", \microtime(true) - 400));
$log->addBreadcrumb(new Breadcrumb(Log::TYPE_INFO, "auth", "Authenticated with * Using API Key", \microtime(true) - 350));
$log->addBreadcrumb(new Breadcrumb(Log::TYPE_INFO, "database", "Found collection abcd1234", \microtime(true) - 300));
$log->addBreadcrumb(new Breadcrumb(Log::TYPE_DEBUG, "database", "Permission for collection abcd1234 met", \microtime(true) - 200));
$log->addBreadcrumb(new Breadcrumb(Log::TYPE_ERROR, "database", "Missing document when searching by ID!", \microtime(true)));
$log->addTag('sdk', 'Flutter');
$log->addTag('sdkVersion', '0.0.1');
$log->addTag('authMode', 'default');
$log->addTag('authMethod', 'cookie');
$log->addTag('authProvider', 'MagicLink');
$log->addExtra('urgent', false);
$log->addExtra('isExpected', true);

// Sentry
$adapter = new Sentry("[YOUR_SENTRY_DSN]");
$logger = new Logger($adapter);
$logger->addLog($log);

// AppSignal
$adapter = new AppSignal("[YOUR_APPSIGNAL_KEY]");
$logger = new Logger($adapter);
$logger->addLog($log);

// Raygun
$adapter = new Raygun("[YOUR_RAYGUN_KEY]");
$logger = new Logger($adapter);
$logger->addLog($log);

// Log Owl
$adapter = new LogOwl("[YOUR_SERVICE_TICKET]");
$logger = new Logger($adapter);
$logger->addLog($log);

适配器

以下是支持的适配器列表,以及它们兼容性测试的版本,以及支持的功能和相关限制。

✅ - 支持,🛠 - 进行中

测试

如果需要安装依赖项,请运行

docker run --rm --interactive --tty \
  --volume $PWD:/app \
  composer update --ignore-platform-reqs --optimize-autoloader --no-plugins --no-scripts --prefer-dist

要运行所有单元测试,请使用 .env.example 作为模板准备 .env 文件。然后,运行

docker run --rm --interactive --tty --env-file .env \
  --volume $PWD:/app \
  composer test

请确保将 TEST_SENTRY_DSN 替换为 Sentry 的实际密钥。

请确保将 TEST_APPSIGNAL_KEY 替换为在 Appsignal -> 项目 -> 应用设置 -> 推送 & 部署 -> 推送密钥中找到的密钥

请确保将 TEST_RAYGUN_KEY 替换为在 Raygun -> 项目 -> 应用程序设置 -> API 密钥中找到的密钥

要运行静态代码分析,请使用以下 Psalm 命令

docker run --rm --interactive --tty \
  --volume $PWD:/app \
  composer check

系统要求

Utopia 框架需要 PHP 8.0 或更高版本。我们建议在可能的情况下始终使用最新的 PHP 版本。

版权和许可

MIT 许可证 (MIT) http://www.opensource.org/licenses/mit-license.php