spacetab-io / logger
基于 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 10:48:43 UTC
README
自 2.0.0
版本起,logger 为非阻塞且基于 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 注册此库(添加到应用程序 DI 容器),请参阅此示例
注意:这是一个示例伪代码。
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! }); } }
- 如何不使用静态::方法注册 logger?这也非常简单。
<?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
特此授予任何获取本软件及其相关文档文件(“软件”)副本的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者提供软件的人这样做,但受以下条件的约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,没有任何形式的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他方式,无论源于、因之或与此软件或软件的使用或其他交易有关。