yiisoft / log
Yii 日志库
Requires
- php: ^8.0
- psr/log: ^2.0|^3.0
- yiisoft/var-dumper: ^1.0
Requires (Dev)
- maglnet/composer-require-checker: ^4.4
- phpunit/phpunit: ^9.5
- rector/rector: ^1.2
- roave/infection-static-analysis-plugin: ^1.18
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.30|^5.25
Suggests
- yiisoft/log-target-db: Allows writing log messages to the database
- yiisoft/log-target-email: Allows sending log messages by email
- yiisoft/log-target-file: Allows writing log messages to the files
- yiisoft/log-target-syslog: Allows writing log messages to the Syslog
Provides
- psr/log-implementation: 1.0.0
This package is auto-updated.
Last update: 2024-09-17 13:57:44 UTC
README
Yii 日志库
此包提供与 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 软件 维护。