mattferris/logging

此软件包的最新版本(1.0)没有提供许可证信息。

PHP 日志记录器

1.0 2024-05-29 19:11 UTC

This package is auto-updated.

Last update: 2024-08-29 19:37:05 UTC


README

符合PSR-3规范的日志记录器。

将日志记录到文件

use MattFerris\Logging\Logger;
use MattFerris\Logging\Handlers\FileHandler;

$logger = new Logger([
    ['handler' => new FileHandler('log.txt')]
]);

$logger->error('an error occured');

在上面的例子中,所有日志消息都将记录到日志文件中。为了隔离特定一个或多个日志级别,可以在传递处理器时指定一个levels键。

use MattFerris\Logging\Logger;
use MattFerris\Logging\Handlers\FileHandler;
use Psr\Log\LogLevel;

$logger = new Logger([
    [
        'handler' => new FileHandler('log.txt'),
        'levels' => [ LogLevel::EMERGENCY, LogLevel::CRITICAL, LogLevel::ERROR ]
    ]
]);

也可以指定一个maxlevel键,以便处理器将记录到特定级别的所有内容。上面的示例可以这样简化

$logger = new Logger([
    [
        'handler' => new FileHandler('log.txt'),
        'maxlevel' => LogLevel::ERROR
    ]
]);

可以使用多个处理器将日志记录到多个目的地。这可以用来将不同的日志级别记录到不同的文件中,甚至是一个文件和一个数据库。目前,只包括FileHandler,但任何实现MattFerris\Logging\Handlers\HandlerInterfacecallable或类都可以使用。

日志消息占位符

根据PSR-3,可以在日志消息中使用占位符,然后使用提供的$context数组中的相应键填充。

$logger->error('the user {user} does not exist', ['user' => 'joe']);

这将生成日志消息用户joe不存在。这个替换由InterpolationHelper辅助类处理。

use MattFerris\Logging\Helpers\InterpolationHelper;

$logger = new Logger($handlers, [ new InterpolationHelper() ]);