phossa/phossa-logger

符合PSR-3标准的PHP日志库。

1.0.7 2016-04-18 04:04 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:47:28 UTC


README

Build Status Latest Stable Version License

查看新的库phoole/logger

简介

Phossa-logger是一个符合PSR-3标准的日志库。它是Monolog的重写,有很多改动。

关于PSR-3的更多信息

安装

使用composer工具安装。

composer require "phossa/phossa-logger=1.*"

或者在您的composer.json中添加以下行

{
    "require": {
       "phossa/phossa-logger": "^1.0.5"
    }
}

用法

  • 简单用法

    // logger with id 'mylogger'
    $logger = new \Phossa\Logger\Logger('mylogger');
    
    // a notice
    $logger->notice('a notice from code');
    
    // a warning
    $logger->warning('a warning from code');

特性

  • 装饰器:用于以某种方式修改$logEntry

    • 实现了__invoke()方法,使得装饰器可调用

      class InterpolateDecorator extends DecoratorAbstract
      {
          public function __invoke(LogEntryInterface $log)
          {
              // ...
          }
      }
    • 用户定义的函数也可以用作装饰器

      $logger->setDecorators([
          new Decorator/InterpolateDecorator(),
          function ($logEntry) {
              // ...
          }
      ]);
    • 装饰器实现了DecoratorInterface可以在运行时禁用

      $inter = new Decorator/InterpolateDecorator();
      $logger->addDecorator($inter);
      // ...
      
      // disble the InterpolateDecorator at runtime
      $inter->stopDecorator();
  • 处理器:将日志条目分发到不同的设备。可以同时设置多个处理器。

    // create a logger with channel 'MyLogger'
    $logger  = new Logger('MyLogger');
    
    // syslog handler with ident set to 'MyLogger'
    $syslog  = new Handler\SyslogerHandler($logger->getChannel());
    
    // console handler with output to stderr
    $console = new Handler\TerminalHandler();
    
    // add handlers
    $logger->addHandler($syslog);
    $logger->addHandler($console);
    
    // ...
     // at some point, stop console logging
    $console->stopHandler();
  • 格式化器:将日志条目对象转换为字符串。格式化器绑定到特定的处理器。

    // console handler with output to stderr
    $console = new Handler\TerminalHandler();
    
    // set AnsiFormatter
    $console->setFormatter(new Formatter\AnsiFormatter());
  • 处理器/装饰器/格式化器都强制在它们的接口中实现'__invoke()',这使得它们可调用。

  • 用户可以使用各种可调用的作为处理器、装饰器或格式化器。

    // handler
    $syslog = new SyslogHandler();
    
    // set a anonymous function as a formatter
    $syslog->setFormatter(
        function ($log) {
            // ...
            return $string;
        }
    );
    
    // adding different handlers
    $logger->setHandlers([
        $syslog,
        function ($log) {
            // convert $log to string and send to a log device
            // ...
        }
    ]);
  • LogEntryInterface用于日志条目(或称之为消息)。现在可以扩展LogEntry并使用工厂闭包来创建日志条目。

    $logger = new Logger('MyLogger', [], [],
        function ($level, $message, $context) {
            return new MyLogEntry($level, $message, $context);
        }
    );
  • 支持PHP 5.4+、PHP 7.0+、HHVM

  • PHP7已准备好返回类型声明和参数类型声明。

  • 符合PSR-1、PSR-2、PSR-3、PSR-4。

依赖

  • PHP >= 5.4.0
  • phossa/phossa-shared >= 1.0.3
  • psr/log

许可证

MIT许可证