artisan-build / vapor-logger
将您的Vapor部署的Laravel应用程序连接到vaporlog.co账户,以实现简单、经济的日志记录。
Requires
- php: ^7.4|^8.0
- ext-json: *
- guzzlehttp/guzzle: ^6.3|^7.3
- illuminate/support: ^7.0|^8.0
- laravel/vapor-core: ^2.10
- spatie/test-time: ^1.2
- symfony/yaml: ^5.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench: ^6.0
- timacdonald/log-fake: ^1.9
README
将您的Vapor部署的Laravel站点连接到VaporLog进行简单、经济的应用日志记录。或者,如果您有野心,可以启动自己的应用程序来捕获日志。
如何使用
此软件包与VaporLog账户一起使用时即可直接运行。当使用有效的API密钥启用后,任何记录的事件调试或更高级别的将发布到VaporLog API,但有一些限制。
-
我们每秒只发布同一事件的其中一个(可以配置但至少为1秒)。所以如果连续快速多次调用
Log::debug('This can only happen once in a second')
,它将每秒只发布到API一次。这是为了尽量降低您的成本(和您的成本)。 -
如果您使用VaporLog来捕获日志,您必须有一个良好的账户。您的API密钥必须有效,并且您必须有一个活跃的订阅。
-
不考虑上述任何其他条件,您的日志将像现在一样继续写入AWS CloudWatch。尽管我们建议将
LOG_LEVEL
降低到调试,因为默认的Vapor设置可能会导致未记录的问题使您的用户看到错误页面。
这是什么以及它不是什么
VaporLog和此软件包不是设计为监控服务。我们只需要一种在Vapor中执行简单应用日志记录的方法,发现CloudWatch日志太混乱,无法真正有用。我们是为我们自己创建的,并且认为“也许其他地方有人会足够喜欢这个,愿意给我们一些钱”。字面上一天内建立的业务,源于我们对一个本应非常好的生态系统的一个小方面的挫败感。所以欢迎您提出建议,但我们并不急于将此变成比简单、超级经济的Vapor部署Laravel应用的日志解决方案更大的东西。
安装
composer require artisan-build/vapor-logger
然后转到VaporLog,创建一个账户,并按照那里的说明激活您的项目。
配置
我们设计此软件包,以便在包含部署环境中的vaporlog.co API密钥的任何Vapor部署的Laravel站点上直接运行。但如果您想变得复杂,有一些事情您可以调整
return [ 'api_key' => env('VAPOR_LOGGER_KEY', null), 'api_url' => env('VAPOR_LOGGER_API', 'https://api.vaporlog.co/api/log'), // POST Url to capture logs 'is_vapor' => env('VAPOR_LOGGER_IS_VAPOR', isset($_SERVER['VAPOR_SSM_PATH'])), 'log_level' => env('VAPOR_LOGGER_LEVEL', env('LOG_LEVEL', 'debug')), 'add_channels' => strlen(env('VAPOR_LOGGER_ADD_CHANNELS', '')) === 0 ? [] : explode(',', env('VAPOR_LOGGER_ADD_CHANNELS')), 'throttle' => [ 'identical' => env('VAPOR_LOGGER_IDENTICAL_THROTTLE', 1), 'failure' => env('VAPOR_LOGGER_FAILURE_THROTTLE', 10), ], 'heartbeat' => env('VAPOR_LOGGER_HEARTBEAT', false), ];
VAPOR_LOGGER_KEY - 这是您在登录到vaporlog.co时获得的API密钥。
VAPOR_LOGGER_API - 如果您想使用此软件包将日志发送到您自己的日志API,您可以通过在此设置URL来实现。
VAPOR_LOGGER_IS_VAPOR - 默认情况下,此软件包仅适用于Vapor部署的站点,但如果您真的想在Vapor之外使用它,我想您可以通过将其设置为true来实现。
VAPOR_LOGGER_LEVEL - 这是将被发送到API的最小日志级别。我们发现将此设置为DEBUG可以给我们最有用的日志,但每个人的口味都不同。
VAPOR_LOG_ADD_CHANNELS - 您想要使用的额外通道的逗号分隔列表。默认情况下,您的日志将发送到 vaporlog.co 以及 Vapor 提供的默认(AWS CloudWatch)。此变量仅 添加 新的日志通道,不会替换它们。
VAPOR_LOGGER_IDENTICAL_THROTTLE - 我们每秒只向 API 发送相同的信息一次。您可以更改此设置,但只能将其增大。如果将其更改为 10,则我们将每 10 秒只发送一次相同的信息。
VAPOR_LOGGER_FAILURE_THROTTLE - 如果 API 返回错误状态,我们将停止尝试记录 10 秒,以便让系统恢复。我们中的任何一方都不应该在无效的事情上浪费金钱。一旦返回成功状态,日志将恢复正常速度。
VAPOR_LOGGER_HEARTBEAT - 如果您想确保包正在正常工作,您可以将其设置为 true,然后每小时您的网站将向 vaporlog 发送一条信息日志,表示它处于活动状态。
贡献
发现 bug 或有改进空间?我们欢迎您的 pull request。如果您做出的贡献被合并,我们将向您提供 vaporlog 上的免费日志服务。请访问 VaporLog。
此软件包是开源的。它提供了一切您从 Vapor 部署的 Laravel 应用程序发送日志到外部 API 所需的东西。您欢迎使用它与 VaporLog 或其他可以与之一起工作的 API。您甚至可以使用它来构建自己的服务以与 VaporLog 竞争。这样做可能是学习如何使用 Laravel Cashier 和 Laravel Sanctum 的好方法。如果您构建了一些有趣的东西,免费或商业的,请发送链接,我们将将其添加到 README 中。
代码审查和测试
composer test:unit # Runs PHPUnit composer lint # Runs php-cs-fixer to fix your coding style composer test # Runs lint and then test:unit