@gistol

Как вывести Логи в отельный файл в symfony 3?

Приветствую.

Вопрос знатокам Symfony 3, а именно версии 3.4.

Создал консольную команду и пытаюсь вывести логи в отдельный файл. Сейчас логи выводятся в консоли и автоматически сохраняются в var/logs/prod.log, а мне хотелось бы разделить их, например в файл import.log

Я так понимаю, нужно в конфетах системы указать нужный путь для записи логов. Перепробовал много вариантов из документации, но ни один так и не заработал. Не понимаю, куда и каким образом нужно вписать настройки.

Прошу помощи кто знает как это сделать.

Код:
<?php
namespace AppBundle\Command;

use AppBundle\Logger\MyDependency;
use AppBundle\Upload\Import;
use AppBundle\Upload\Settings;
use AppBundle\Upload\Utility;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Logger\ConsoleLogger;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;


class ImportCommand extends ContainerAwareCommand
{
   
    protected function configure()
    {
        $this
            ->setName('app:import-products')
            ->setDescription('Good morning!');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $logger = $this->getContainer()->get('logger');
        $logger->error('Your error message');
        $logger->alert('Your alert');
        $logger->debug('Your debug message', ['foo' => 'bar']); // additional context information
        $logger->log('error','Put this in the log file');
 }
}


Структура папки с конфигами
5c77c7b1ceb75074897331.png

Код настроек
Пробовал в config.yml, config_prod.yml
monolog:
  handlers:
    # ...
    console:
      type:   console
      process_psr_3_messages: false
      channels: ['!event', '!doctrine', '!console']
    nested:
      type:  stream
      path:  "%kernel.logs_dir%/%kernel.environment%test.log"
      level: debug


Пробовал в services.yml
services:
    # default configuration for services in *this* file
    _defaults:
        # automatically injects dependencies in your services
        autowire: true
        # automatically registers your services as commands, event subscribers, etc.
        autoconfigure: true
        # this means you cannot fetch services directly from the container via $container->get()
        # if you need to do this, you can override this setting on individual services
        public: false
    AppBundle\Command\ImportCommand:
      arguments:
        $logger: '@logger'
      tags:
      - { name: monolog.logger, channel: application_logger }
  • Вопрос задан
  • 991 просмотр
Пригласить эксперта
Ответы на вопрос 1
@sidni
Php Developer
типа создать свой хендлер и канал
channels: ['my_handler']
my_handler:
            type: stream
            path: "%kernel.logs_dir%/%kernel.environment%_my_handler.log"
            channels: ["my_handler"]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы