Использование логгера
Использование логгера
Компонент Console поставляется с самостоятельным логгером, подчиняющимся стандарту PSR-3. В зависимости от настройки уровня детализации, сообщения логов будут отправлены экземпляру OutputInterface, переданному конструктору в качестве параметра.
Логгер не имеет никаких внешних зависимостей, кроме psr/log
. Это полезно
для консольных приложенй и команд, которым необходим лёгкий эластичный PSR-3
логер:
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.');
}
}
Вы можете положиться на логер в использовании зависимостей внутри команды:
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();
}
}
Зависимость будет использовать экземпляр ConsoleLogger в качестве логгера. Полученные сообщения логов будут отображены в выводе консоли.
Детализация
В зависимости от уровня детализации запущенной команды, сообщения могут быть отправлены экземпляру OutputInterface, или нет.
По умолчанию, логгер консоли ведёт себя как Monolog's Console Handler. Связь между уровнем лока и детализацией можно сконфигурировать через второй параметр конструктора:
1 2 3 4 5 6 7 8
use Psr\Log\LogLevel;
// ...
$verbosityLevelMap = array(
LogLevel::NOTICE => OutputInterface::VERBOSITY_NORMAL,
LogLevel::INFO => OutputInterface::VERBOSITY_NORMAL,
);
$logger = new ConsoleLogger($output, $verbosityLevelMap);
Цвет
Логгер выводит сообщения логов, форматированных с помощью цвета, который отображает их уровень. Это поведение можно сконфигурировать через третий параметр конструктора:
1 2 3 4 5 6
// ...
$formatLevelMap = array(
LogLevel::CRITICAL => ConsoleLogger::ERROR,
LogLevel::DEBUG => ConsoleLogger::INFO,
);
$logger = new ConsoleLogger($output, array(), $formatLevelMap);
Ошибки
Логгер Console включает в себя метод hasErrored()
, который возвращает
true
, как только было записано какое-либо сообщение об ошибке во время
выполнения команды. Это полезно для того, чтобы решить, какой статус-код
следует вернуть в качестве результата выполнения команды.