yiisoft/log

Yii 日志库

2.1.0 2024-07-03 10:13 UTC

This package is auto-updated.

Last update: 2024-09-17 13:57:44 UTC


README

Yii

Yii 日志库


Latest Stable Version Total Downloads Build status Code coverage Mutation testing badge static analysis type-coverage

此包提供与 PSR-3 兼容的日志库。它在 Yii 框架 中使用,但也可以单独使用。

日志记录器将消息传递到多个目标。每个目标可以按消息的严重性和类别过滤消息,然后将其导出到某些媒体,如文件、电子邮件或系统日志。

要求

  • PHP 8.0 或更高版本。

安装

可以使用 Composer 安装此包。

composer require yiisoft/log

通用用法

创建日志记录器

/**
 * List of class instances that extend the \Yiisoft\Log\Target abstract class.
 * 
 * @var \Yiisoft\Log\Target[] $targets
 */
$logger = new \Yiisoft\Log\Logger($targets);

写入日志

$logger->emergency('Emergency message', ['key' => 'value']);
$logger->alert('Alert message', ['key' => 'value']);
$logger->critical('Critical message', ['key' => 'value']);
$logger->warning('Warning message', ['key' => 'value']);
$logger->notice('Notice message', ['key' => 'value']);
$logger->info('Info message', ['key' => 'value']);
$logger->debug('Debug message', ['key' => 'value']);

消息刷新和导出

日志消息被收集并存储在内存中。为了限制内存消耗,日志记录器会在积累了一定数量的日志消息后,将记录的消息刷新到日志目标。您可以通过调用 \Yiisoft\Log\Logger::setFlushInterval() 方法来自定义此数量。

$logger->setFlushInterval(100); // default is 1000

每个日志目标也会在内存中收集和存储消息。目标中的消息导出遵循与日志记录器相同的原理。要更改存储的消息数量,请调用 \Yiisoft\Log\Target::setExportInterval() 方法。

$target->setExportInterval(100); // default is 1000

注意:当应用程序结束时,也会进行所有消息的刷新和导出。

日志目标

此包包含两个目标

  • Yiisoft\Log\PsrTarget - 将日志消息传递给另一个 PSR-3 兼容的日志记录器。
  • Yiisoft\Log\StreamTarget - 将日志消息写入指定的输出流。

其他日志目标作为单独的包实现

上下文提供者

上下文提供者用于为日志消息提供额外的上下文数据。您可以在 Logger 构造函数中定义自己的上下文提供者。

$logger = new \Yiisoft\Log\Logger(contextProvider: $myContextProvider);

默认情况下,以下上下文提供者可用

  • SystemContextProvider — 添加系统信息(时间、内存使用、跟踪、默认类别);
  • CommonContextProvider — 添加常用数据;
  • CompositeContextProvider — 允许组合多个上下文提供者。

默认情况下,日志记录器使用内置的 SystemContextProvider

SystemContextProvider

SystemContextProvider 添加以下数据到上下文

  • time — 当前 Unix 时间戳,带微秒(浮点值);
  • trace — 调用栈信息数组;
  • memory — 字节数的内存使用。
  • category — 日志消息的类别(始终为 "application")。

Yiisoft\Log\ContextProvider\SystemContextProvider 构造函数参数

  • traceLevel — 每个日志消息应记录多少调用栈信息(文件名和行号)。如果它大于 0,则最多记录该数量的调用栈。请注意,仅计算应用程序调用栈。
  • excludedTracePaths — 当启用 traceLevel 时,排除跟踪的路径数组。

自定义参数使用示例

$logger = new \Yiisoft\Log\Logger(
    contextProvider: new Yiisoft\Log\ContextProvider\SystemContextProvider(
        traceLevel: 3,
        excludedTracePaths: [
            '/vendor/yiisoft/di',
        ],
    ),
);

CommonContextProvider

CommonContextProvider 允许向日志上下文中添加额外的常用信息。例如

$logger = new \Yiisoft\Log\Logger(
    contextProvider: new Yiisoft\Log\ContextProvider\CommonContextProvider([
       'environment' => 'production',
    ]),
);

CompositeContextProvider

CompositeContextProvider 允许将多个上下文提供者组合成一个。例如

$logger = new \Yiisoft\Log\Logger(
    contextProvider: new Yiisoft\Log\ContextProvider\CompositeContextProvider(
        new Yiisoft\Log\ContextProvider\SystemContextProvider(),
        new Yiisoft\Log\ContextProvider\CommonContextProvider(['environment' => 'production'])
    ),
);

文档

如果您需要帮助或有任何问题,可以在 Yii 论坛 找到。您还可以查看其他 Yii 社区资源

许可

Yii 日志库是免费软件。它根据 BSD 许可证发布。有关更多信息,请参阅 LICENSE

Yii 软件 维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack