itafroma / snaglogger
Bugsnag 的 PSR-3 记录器
Requires
- php: ~5.6 || ~7.0
- bugsnag/bugsnag: ^3.4
- psr/log: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.4
- scrutinizer/ocular: ^1.3
- squizlabs/php_codesniffer: ^2.4
README
Snaglogger 是一个与 PSR-3 兼容的记录器,它将日志消息发送到 Bugsnag。
安装
您可以通过 Composer 将 Snaglogger 添加到项目中
{ "require": { "itafroma/snaglogger": "^2.0" } }
Snaglogger 使用 语义化版本控制。一般来说,您可以锁定到 ^[MAJOR].0
并有信心在更新过程中不会收到破坏性的更改。
使用方法
快速入门
Snaglogger 附带了一个工厂,该工厂使用合理的默认值实例化记录器
use Itafroma\Snaglogger\LoggerFactory; $key = 'YOUR BUGSNAG API KEY HERE'; $logger = LoggerFactory::create($key);
一旦实例化,记录器将像任何其他 PSR-3 兼容的记录器一样工作
$logger->info('This is an informational message.'); $logger->error('This is an error.');
PSR-3 上下文数组
Snaglogger 将 $context
数组的内容作为 元数据 发送到 Bugsnag。
此外,Snaglogger 将两个 $context
键视为特殊键
- 如果
exception
键包含异常的实例,Snaglogger 将记录日志消息作为异常而不是错误。 - 如果设置了
error-type
键,Snaglogger 将使用该键作为错误类型。否则,它将使用错误严重性。
最后,Snaglogger 将使用 $context
数组在日志消息中进行占位符替换
$message = 'The {location} is on fire!'; $context = ['location' => 'roof']; // Bugsnag will record the error message as "The roof is on fire!" $logger->error($message, $context);
严重性级别
Bugsnag 仅支持三个严重性级别:info、warning 和 error。然而,PSR-3 要求记录器支持八个:emergency、alert、critical、error、warning、notice、info 和 debug。默认情况下,Snaglogger 将这些额外的日志级别映射到最接近的 Bugsnag 严重性级别
- emergency → error
- alert → error
- critical → error
- error → error
- warning → warning
- notice → info
- info → info
- debug → info
高级使用
某些功能可以通过实现某些接口进行自定义
- 自定义严重性映射:
\Itafroma\Snaglogger\SeverityMapperInterface
- 自定义消息插值:
\Itafroma\Snaglogger\MessageInterpolatorInterface
更多信息可以在这些接口的文档中找到。
您还可以自定义 Bugsnag 客户端。
要覆盖 Snaglogger 的默认功能,您需要
- 实现自己的
\Itafroma\Snaglogger\LoggerFactoryInterface
具体类,或者 - 直接调用
Logger
构造函数。
例如
$client = Client::make('API KEY')->setReleaseStage('prod'); $interpolator = new CustomMessageInterpolator(); $mapper = new CustomSeverityMapper(); $logger = new Logger($client, $interpolator, $mapper);
贡献
欢迎贡献!请参阅单独的 CONTRIBUTING 文件以获取更多信息。
版权和许可
此扩展由 Mark Trapp 版权所有。版权所有。它根据 MIT 许可证提供。许可证的副本可以在 LICENSE 文件中找到。
免责声明
本项目与Bugsnag没有任何关联。更多免责声明可以在许可文件中找到。