spacetab-io / logger-php
基于 Amp 和 Monolog 的 PHP 非阻塞日志记录。没有该死的括号。
3.0.0-beta.1
2022-10-11 06:51 UTC
Requires
- php: >=8.1
- amphp/log: v2.0.0-beta.1@dev
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9
- symfony/var-dumper: ^4 || ^5 || ^6
This package is auto-updated.
Last update: 2024-09-11 11:04:44 UTC
README
从 2.0.0
版本开始,日志记录器是非阻塞的,基于 Amp 和 Monolog。
我创建这个库只有一个目标,就是我对总是在我的每个带有日志的微服务中复制粘贴相同的代码感到厌烦。
这个包装器解决了日志的一个问题。这个问题就是该死的括号 -> [] [] [] []。
这个包装器如何呈现日志的示例
[2019-04-29 21:39:52] Server.INFO: CONFIG_PATH = ./configuration
[2019-04-29 21:39:52] Server.INFO: STAGE = local
[2019-04-29 21:39:52] Server.INFO: Configuration module loaded
[2019-04-29 21:39:52] Server.INFO: HTTP static server started at 0.0.0.0:8080
这是一个正常视图,没有 Monolog 的该死括号。好吧,我也讨厌它的使用方式?
用法
- 通过
composer
安装库
composer require spacetab-io/logger
- 大多数情况下的基本示例如下
use Spacetab\Logger\Logger; $log = Logger::default(); // Psr\Log\LoggerInterface $log->info('write something');
- 如果您想通过 Service Provider 注册此库(添加到应用程序依赖注入容器中),请参阅此示例
注意:这是一个示例伪代码。
use Monolog\Logger; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; class LoggerModule implements ServiceProvider { /** * @param ContainerInterface $container */ public function provideServices($container): void { $container->register(LoggerInterface::class, function () { return Logger::default(); // it's all! }); } }
- 如何不使用静态::方法注册日志记录器?这也很简单。
<?php use Spacetab\Logger\Logger; use Psr\Log\LogLevel; $log = new Logger('ChannelName', LogLevel::DEBUG); // enabled debug mode and set the channel name $log->addStreamHandler(); $log->register(); $log->getMonolog()->info('Hello world');
- 好吧。这很酷。但我已经将日志写入多个流。我怎么办?
<?php use Spacetab\Logger\Logger; use Monolog\Handler\HandlerInterface; use Monolog\Handler\NullHandler; use Psr\Log\LogLevel; $log = new Logger('ChannelName', LogLevel::DEBUG); // enabled debug mode and set the channel name $log->addStreamHandler(); $log->addHandler(function (string $level): HandlerInterface { return new NullHandler($level); }); $log->register(); $log->getMonolog()->info('Diligence is the mother of success');
简单?是的,而且没有该死的括号。
许可证
MIT 许可证
版权所有 © 2022 spacetab.io,Inc. https://spacetab.io
在此特此授予任何获得本软件及其相关文档文件(“软件”)副本的人免费处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许软件提供者使用软件,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论此类索赔、损害或其他责任是基于合同、侵权或其他方式,源于、因之而产生或与此软件或软件的使用或其他交易有关。