spacetab-io/logger

基于 Amp 和 Monolog 的 PHP 非阻塞日志记录。没有该死的括号。

3.0.0-beta.1 2022-10-11 06:51 UTC

This package is auto-updated.

Last update: 2024-09-11 10:48:43 UTC


README

CircleCI codecov

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 的该死括号。好吧,我也讨厌它怎么使用?

使用方法

  1. 通过 composer 安装库
composer require spacetab-io/logger
  1. 对于大多数情况,基本示例如下
use Spacetab\Logger\Logger;

$log = Logger::default(); // Psr\Log\LoggerInterface
$log->info('write something');
  1. 如果您想通过 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!
        });
    }
}
  1. 如何不使用静态::方法注册 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');
  1. 好吧。这很酷。但我已经将日志写入多个流中。我怎么办?
<?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

特此授予任何获取本软件及其相关文档文件(“软件”)副本的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者提供软件的人这样做,但受以下条件的约束

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,没有任何形式的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他方式,无论源于、因之或与此软件或软件的使用或其他交易有关。