webiny/logger

Webiny Logger 组件

维护者

详细信息

github.com/Webiny/Logger

主页

源代码

安装: 147

依赖: 0

建议者: 0

安全: 0

星星: 1

关注者: 10

分支: 1

v1.6.1 2017-09-29 08:12 UTC

README

Logger 组件用于记录数据。您可以将任何内容记录到任何目的地,您需要做的就是为您的日志驱动程序创建一个 handler。此组件受到了 https://github.com/Seldaek/monolog 库的极大启发(如果您之前使用过该库,这个组件对您来说非常熟悉)。您可能会说它完全相同,但我们发现了一些我们想要更改/改进的地方,例如拥有具有适当获取器和设置器的 Record 类,我们更改了一些方法命名、处理逻辑和其他细节,以更好地适应我们的框架。我们确实缺少一些内置的处理程序、格式化和处理程序,但这将会随着时间的推移而实现。

安装组件

安装组件的最佳方式是使用 Composer。

composer require webiny/logger

要查看包的额外版本,请访问Packagist 页面

驱动程序

内置驱动程序包括

  • Null
  • Webiny

Null 驱动程序用于在不更改代码的情况下关闭日志记录。您只需更改配置以使用 Null 驱动程序,所有日志调用都将发送到空白处。Webiny 驱动程序包含您可能需要的所有日志记录功能,因此默认使用该驱动程序。

Logger 组件使用 PSR-3 日志接口和 PSR-3 日志级别。所有日志级别常量都位于 LoggerLevel 类中。话虽如此,您可以为您的日志驱动程序创建自己的驱动程序,该驱动程序甚至没有处理程序、格式化程序或任何类似的东西。只需实现日志接口,其余的由您自己决定。如果您喜欢 Monolog 概念,那么 Webiny 驱动程序就是您的选择。

Logger 设置

以下是一个示例日志服务设置,它使用 FileHandler、两个处理程序和一个 FileFormatter。配置文件的结构与其他所有注册服务的 Webiny 组件相同。

Logger:
    Parameters:
        Logger.Class: \Webiny\Component\Logger\Logger
        Logger.Driver.Class: \Webiny\Component\Logger\Driver\Webiny
        Logger.Processor.FileLine.Class: \Webiny\Component\Logger\Driver\Webiny\Processor\FileLineProcessor
        Logger.Processor.MemoryUsage.Class: \Webiny\Component\Logger\Driver\Webiny\Processor\MemoryUsageProcessor
        Logger.Formatter.File.Class: \Webiny\Component\Logger\Driver\Webiny\Formatter\FileFormatter
        Logger.Handlers.File.Class: \Webiny\Component\Logger\Driver\Webiny\Handler\FileHandler
    Services:
        MyFileLogger:
            Class: %Logger.Class%
            Arguments: [System, %Logger.Driver.Class%]
            Calls:
                - [addHandler, [@Logger.LogHandler]]
        LogFile:
            Class: \Webiny\Component\Storage\File\File
            Arguments:
                Key: Development/Log.txt
                Storage: @Storage.Logger # Define this service in your Storage configuration
        LogHandler:
            Class: %Logger.Handlers.File.Class%
            Arguments: [@Logger.LogFile, [], true, false]
            Calls:
                - [addProcessor, [%Logger.Processor.FileLine.Class%]]
                - [addProcessor, [%Logger.Processor.MemoryUsage.Class%]]
                - [setFormatter, [%Logger.Formatter.File.Class%]]
    Configs:
        Formatter:
            Default:
                DateFormat: 'H:i:s d-m-Y'
            File:
                RecordFormat: '%datetime% [%loggerName%] [%level%]: %message%\nContext: %context%\nExtra: %extra%\n\n'
    ClassLoader:
        Psr: '../Psr'

注意:在我们的示例中(LogHandler 服务)的 FileHandler(日志处理程序服务)将 File 作为第一个参数。我们只能使用 Storage 组件写入文件,因此我们需要一个提供 File 实例的服务。

在 PHP 中使用您的日志记录器

// Set component config
Logger::setConfig($pathToYourConfigFile);

// Now your logger exists in the system as a 'MyFileLogger' service.
// You can use it by either using a LoggerTrait...
$logger = $this->logger('MyFileLogger');
$logger->info('This is pretty simple!');

// ... or by using ServiceManagerTrait. Note that ServiceManager groups services by component
// So your service is called 'Logger.MyFileLogger'. When using LoggerTrait, it appends the service group for you.
$logger = $this->service('Logger.MyFileLogger');
$logger->warn('This is just a little bit longer...');

日志设置和处理逻辑背后的逻辑

  1. 创建日志实例
  2. 创建处理程序实例(您可以在您的日志记录器中拥有多个处理程序)
  3. 将处理程序和格式化程序添加到您的处理程序实例中
  4. 将处理程序添加到您的日志记录器中
  5. 使用您的日志记录器

当您记录一条消息时,它将经过每个处理程序,然后每个处理程序将其传递给每个处理程序。格式化程序是最后一个改变记录的东西。它只是将记录格式化为适合处理程序的格式。它可能是字符串、数组等。在处理过程的最后 - 处理程序将格式化后的记录写入目的地(无论是文件、数据库、电子邮件、套接字等)

资源

要运行单元测试,您需要使用以下命令

$ cd path/to/Webiny/Component/Logger/
$ composer.phar install
$ phpunit