consolidation / log
基于 Symfony Console 组件改进的 Psr-3 / Psr\Log logger。
Requires
- php: >=8.0.0
- psr/log: ^3
- symfony/console: ^5 || ^6 || ^7
Requires (Dev)
- phpunit/phpunit: ^7.5.20 || ^8 || ^9
- squizlabs/php_codesniffer: ^3
- yoast/phpunit-polyfills: ^0.2.0
- 3.x-dev
- 3.1.0
- 3.0.0
- 2.x-dev
- 2.1.1
- 2.1.0
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.1.1
- 1.1.0
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-larowlan-symfony7
- dev-test-with-8.3
- dev-test-on-8.2
- dev-bc-for-3
- dev-remove-success
- dev-psr-log-2
- dev-backport-settable-interface
- dev-test-more-log-levels
- dev-settable-output-interface
- dev-symfony-6
- dev-php-8.1
- dev-highest-on-8
- dev-github-actions
- dev-symfony5
- dev-php-74
- dev-expanded-testing
- dev-manage-styles
- dev-logger-manager
- dev-g1a
- dev-composer-scenarios
- dev-split-out-scenarios
- dev-test-multiple-symfony-versions
- dev-phpunit6
- dev-interpolation-compatibility
- dev-coveralls
This package is auto-updated.
Last update: 2024-09-05 00:48:26 UTC
README
基于 Symfony Console 组件改进的 PSR-3 Psr\Log logger。
组件状态
在 Robo 中使用。
动机
Consolidation\Log 提供了一个与 PSR-3 兼容的 logger,它可以将格式化的日志输出到标准错误流(stderr)。默认情况下,样式由 Symfony Console 组件的 SymfonyStyle 类提供;然而,如果需要,也可以提供替代的样式器。
使用方法
$logger = new \Consolidation\Log\Logger($output);
$logger->setLogOutputStyler(new LogOutputStyler()); // optional
$logger->warning('The file {name} does not exist.', ['name' => $filename]);
字符串插值(即替换,如上述示例中的 {name}
)不是 PSR-3 所必需的,也不是 Psr\Log 项目中默认实现的。然而,它被 PRS-3 推荐并经常使用,例如在 Symfony Console logger 中。
Consolidation\Log 支持字符串插值。
可以使用日志管理器将所有日志消息委托给一个或多个 logger。
$logger = new \Consolidation\Log\LoggerManager();
$logger->add('default', new \Consolidation\Log\Logger($output));
例如,如果您需要在早期将 logger 注入到应用程序对象中(例如,注入到依赖注入容器中),但输出对象将在稍后才能使用,这非常有用。
与现有解决方案的比较
许多 Symfony Console 组件使用 SymfonyStyle 来格式化它们的输出消息。这个辅助类有诸如 success
和 warning
这样的方法名,使其似乎是一个自然的选择用于报告状态。
然而,在实践中,使用实际的 Psr-3 logger 进行日志记录要方便得多。这样做允许 Symfony Console 组件调用可能不需要依赖 Symfony Style 的外部库。让 Psr\Log\LoggerInterface 作为控制台工具及其依赖库之间唯一的共享 IO 相关接口,促进了松耦合,允许这些库在可能希望以不同方式记录的其他上下文中重用。
Symfony Console 提供了 ConsoleLogger 来满足这一需求;然而,ConsoleLogger 并不提供任何用于格式化输出的功能,使得 SymfonyStyle 成为有样式意识的控制台程序员首选的日志记录机制。
Consolidation\Log 提供了这两个类的好处,允许代码在技术上表现正确(重定向到 stderr)的同时,不牺牲样式。
Monolog 也提供了一种功能齐全的控制台 logger,可能适用于某些用例。