webiik/log

Log 提供了高级日志记录的简单解决方案。

1.0 2019-02-28 21:18 UTC

This package is auto-updated.

Last update: 2024-09-29 05:08:47 UTC


README

日志

Log 提供了高级日志记录的简单解决方案。

安装

composer require webiik/log

示例

$log = new \Webiik\Log\Log();
$log->addLogger(function () {
    return new \Webiik\Log\Logger\FileLogger();
});
$log->info('Hello {name}!', ['name' => 'Dolly!']);
$log->write();

日志记录器

addLogger

addLogger(callable $factory): Logger

addLogger() 创建新的 Logger 并将其注入到其中。将创建的 Logger 添加到 Log 并返回它。要处理日志,您必须向 Log 添加一些 Logger。Log 包含 3 个可选的日志记录器:ErrorLogger、FileLogger 和 MailLogger。

$log->addLogger(function () {
    return new \Webiik\Log\Logger\ErrorLogger();
});

编写自定义日志记录器

您可以编写自己的自定义日志记录器。您需要做的只是实现 Webiik\Log\Logger\LoggerInterface

// CustomLogger.php
declare(strict_types=1);

use Webiik\Log\Message;

class CustomLogger implements Webiik\Log\Logger\LoggerInterface
{
    public function write(Message $message): void
    {
        // Process Message...
    }
}

消息

add

emergency(string $message, array $context = []): Message
alert(string $message, array $context = []): Message
critical(string $message, array $context = []): Message
error(string $message, array $context = []): Message
warning(string $message, array $context = []): Message
notice(string $message, array $context = []): Message
info(string $message, array $context = []): Message
debug(string $message, array $context = []): Message
log(string $level, string $message, array $context = []): Message

Message 添加到 Log。添加的消息在调用 write() 方法之前不会写入。消息可以包含 {占位符},这些占位符将被来自 context 数组的值替换。它返回 Message

$log->info('Hello {name}!', ['name' => 'Dolly!']);

write

write(): void

write() 移除所有添加的消息并使用关联的日志记录器将它们写入。

$log->write();

setData

Message->setData(array $data): Message

setData() 向您的消息添加额外数据。

$log->info('Hello Dolly!')->setData(['greeter' => 'Molly']);

setGroup

Logger->setGroup(string $group): Logger
Message->setGroup(string $group): Message

setGroup() 将 Logger 添加到正组。每个 Logger 和日志消息都可以属于一个或多个正组。当 Logger 属于某些组时,它只记录属于同一组的消息。

// This logger logs only log messages belonging to 'error' group
$log->addLogger(function () {
    return new \Webiik\Log\Logger\ErrorLogger();
})->setGroup('error');

// Add some log messages
$log->info('Some info.');
$log->warning('Some error.')->setGroup('error');

setNegativeGroup

Logger->setNegativeGroup(string $group): Logger
Message->setGroup(string $group): Message

setNegativeGroup() 将 Logger 添加到负组。每个 Logger 都可以属于一个或多个负组。当 Logger 属于某些负组时,它不会记录属于同一组的消息。

// This logger doesn't log messages belonging to 'error' group
$log->addLogger(function () {
    return new \Webiik\Log\Logger\FileLogger();
})->setNegativeGroup('error');

// Add some log messages
$log->info('Some info.');
$log->warning('Some error.')->setGroup('error');

级别

setLevel

Logger->setLevel(string $level): Logger

setLevel() 设置 Logger 以仅写入具有特定 PSR-3 日志级别的消息。

// This logger logs messages from all groups but only with log level 'info'
$log->addLogger(function () {
    return new \Webiik\Log\Logger\FileLogger();
})->setLevel('info');

静默模式

setSilent

setSilent(bool $silent): void

setSilent() 配置 Log 以跳过失败的 Logger。在静默模式下,失败的 Logger 不会停止代码执行,而是将这些事件用其他 Logger 记录。默认值为 FALSE

$log = setSilent(true);

资源