3
votes

I'm on Symfony 4 and I want to create a dedicated channel for many log types: this is my configuration for channels and handlers:

 monolog:
  channels: ["channel1", "channel2"]

  handlers:
    channel1:
      level: debug
      type:  stream
      path:  "%kernel.logs_dir%/channel1.log"
      channels: ["channel"]

    channel2:
      level: debug
      type:  stream
      path:  "%kernel.logs_dir%/channel2.log"
      channels: ["channel2"]

Then, in my service to write log, I inject the custom

 services:
  _defaults:
    autowire: true
    autoconfigure: true
  Infrastructure\Logger\Channel1Logger:
    arguments:
       - '@monolog.logger.channel1'

  Infrastructure\Logger\Channel2Logger:
    arguments:
      - '@monolog.logger.channel2'

But, all my logs are directly written to the channel "app", When I debug the container, I see my services listed What I'm doing wrong?

1
I found the error. By default, the config/services.yaml will override all configuration from external files. That's why my log continues to be on the default channel (autowiring). To avoid this, you have to exclude the loggers custom files from autowiringJessGabriel
Can you please copy your comment into new answer and then mark it as selected? Nice finding, by the way, good to know.alx
I have pasted it as commentJessGabriel

1 Answers

1
votes

I found the error. By default, the config/services.yaml will override all configuration from external files. That's why my log continues to be on the default channel (autowiring). To avoid this, you have to exclude the loggers custom files from autowiring