感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
Console组件自带了一个独立的logger,它遵循 PSR-3 标准。根据verbosity选项的设定,日志信息将被发送到 OutputInterface
实例,output实例作为logger的构造参数而传入。
这个logger并没有任何外部依赖,除了 php-fig/log
之外。因为这对命令行程序有用,命令行需要一个兼容PSR-3的轻量级logger:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | namespace Acme;
use Psr\Log\LoggerInterface;
class MyDependency
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function doStuff()
{
$this->logger->info('I love Tony Vairelles\' hairdresser.');
}
} |
在一个命令中使用(上面)这个依赖,即可依赖于此logger:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | namespace Acme\Console\Command;
use Acme\MyDependency;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Logger\ConsoleLogger;
class MyCommand extends Command
{
protected function configure()
{
$this
->setName('my:command')
->setDescription(
'Use an external dependency requiring a PSR-3 logger'
)
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$logger = new ConsoleLogger($output);
$myDependency = new MyDependency($logger);
$myDependency->doStuff();
}
} |
这个依赖(MyDependency类)所使用的logger,是 ConsoleLogger
实例。日志信息的发送,将会显示在控制台output中。
根据所运行命令的verbosity level,日志信息会(或不会)被发送至 OutputInterface
实例。
默认时,console logger的行为类似于 Monolog's Console Handler。log level(日志级别)以及冗长设置(verbosity)之间的关联,可以通过 ConsoleLogger
构造器的第二个参数来设置:
logger输出的日志信息,会根据信息级别进行相应的颜色格式化。这种行为可以通过logger的第三个构造参数来配置:
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。